grpc 1.36.0 → 1.38.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 (680) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +126 -92
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +15 -1
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +7 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +715 -3166
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -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 +9 -1
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  24. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
  25. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  26. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  27. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  28. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  29. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
  30. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  35. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  36. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  37. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  40. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +29 -44
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +86 -63
  46. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  48. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  49. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  50. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  51. data/src/core/ext/filters/client_channel/resolver.cc +3 -0
  52. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +38 -33
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  62. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  63. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  64. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  65. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -14
  66. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  67. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +334 -114
  68. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  69. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  70. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  71. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  72. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  73. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  74. data/src/core/ext/filters/client_channel/server_address.cc +4 -1
  75. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  76. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  77. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  78. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  79. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  80. data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
  81. data/src/core/ext/filters/client_channel/subchannel.h +68 -99
  82. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  83. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
  84. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  85. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  86. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
  87. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  88. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  89. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  90. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  91. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  92. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  93. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  94. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  95. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  96. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  97. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  98. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
  99. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
  100. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  101. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
  102. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
  103. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
  104. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +485 -199
  105. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  106. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  107. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
  108. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  109. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
  110. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
  111. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  112. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  113. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  114. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  115. data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
  116. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  118. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  120. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  121. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  122. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  124. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  125. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  126. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  128. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  130. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  131. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  132. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  133. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  134. data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
  135. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  137. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  138. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  139. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  140. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
  141. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
  144. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  145. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  146. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  147. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  148. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -0
  149. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +44 -0
  150. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  151. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  152. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
  153. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
  154. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
  155. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
  156. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +6 -5
  157. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +13 -9
  158. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
  159. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
  160. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  161. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  162. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  163. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  164. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  165. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  166. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  167. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  168. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
  169. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
  170. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
  171. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
  172. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  173. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  174. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  175. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  176. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +13 -7
  177. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  178. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  179. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  180. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
  181. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  182. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
  183. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  184. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +21 -20
  185. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
  186. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
  187. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  188. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  189. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  190. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  191. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  192. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  193. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  194. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  195. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  196. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  197. data/src/core/ext/xds/xds_api.cc +1649 -329
  198. data/src/core/ext/xds/xds_api.h +284 -44
  199. data/src/core/ext/xds/xds_bootstrap.cc +110 -156
  200. data/src/core/ext/xds/xds_bootstrap.h +24 -25
  201. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  202. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  203. data/src/core/ext/xds/xds_channel_args.h +5 -2
  204. data/src/core/ext/xds/xds_client.cc +454 -177
  205. data/src/core/ext/xds/xds_client.h +62 -22
  206. data/src/core/ext/xds/xds_client_stats.h +5 -4
  207. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  208. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  209. data/src/core/ext/xds/xds_http_filters.cc +114 -0
  210. data/src/core/ext/xds/xds_http_filters.h +130 -0
  211. data/src/core/ext/xds/xds_server_config_fetcher.cc +410 -131
  212. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  213. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  214. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +107 -4
  215. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
  216. data/src/core/lib/channel/channel_stack.cc +22 -9
  217. data/src/core/lib/channel/channel_stack.h +17 -9
  218. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  219. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  220. data/src/core/lib/channel/channelz.cc +108 -12
  221. data/src/core/lib/channel/channelz.h +30 -1
  222. data/src/core/lib/channel/channelz_registry.cc +14 -0
  223. data/src/core/lib/channel/connected_channel.cc +4 -4
  224. data/src/core/lib/channel/handshaker.cc +7 -45
  225. data/src/core/lib/channel/handshaker.h +5 -22
  226. data/src/core/lib/channel/status_util.cc +12 -2
  227. data/src/core/lib/channel/status_util.h +5 -0
  228. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  229. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  230. data/src/core/lib/gpr/sync_abseil.cc +3 -6
  231. data/src/core/lib/gpr/sync_windows.cc +2 -2
  232. data/src/core/lib/gprpp/atomic.h +3 -3
  233. data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
  234. data/src/core/lib/gprpp/ref_counted.h +28 -14
  235. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
  236. data/src/core/lib/gprpp/status_helper.cc +407 -0
  237. data/src/core/lib/gprpp/status_helper.h +180 -0
  238. data/src/core/lib/gprpp/thd.h +1 -1
  239. data/src/core/lib/http/httpcli.cc +11 -11
  240. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  241. data/src/core/lib/http/parser.cc +16 -16
  242. data/src/core/lib/http/parser.h +4 -4
  243. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  244. data/src/core/lib/iomgr/buffer_list.h +5 -6
  245. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  246. data/src/core/lib/iomgr/call_combiner.h +12 -14
  247. data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
  248. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  249. data/src/core/lib/iomgr/closure.h +7 -6
  250. data/src/core/lib/iomgr/combiner.cc +14 -12
  251. data/src/core/lib/iomgr/combiner.h +2 -2
  252. data/src/core/lib/iomgr/endpoint.cc +1 -1
  253. data/src/core/lib/iomgr/endpoint.h +2 -2
  254. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  255. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  256. data/src/core/lib/iomgr/error.cc +167 -61
  257. data/src/core/lib/iomgr/error.h +218 -107
  258. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  259. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  260. data/src/core/lib/iomgr/error_internal.h +5 -1
  261. data/src/core/lib/iomgr/ev_apple.cc +6 -6
  262. data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
  263. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  264. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  265. data/src/core/lib/iomgr/ev_posix.cc +12 -11
  266. data/src/core/lib/iomgr/ev_posix.h +9 -9
  267. data/src/core/lib/iomgr/exec_ctx.cc +10 -6
  268. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  269. data/src/core/lib/iomgr/executor.cc +8 -8
  270. data/src/core/lib/iomgr/executor.h +2 -2
  271. data/src/core/lib/iomgr/iomgr.cc +1 -1
  272. data/src/core/lib/iomgr/iomgr.h +1 -1
  273. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  274. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  275. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  276. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  277. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  278. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  279. data/src/core/lib/iomgr/load_file.cc +4 -4
  280. data/src/core/lib/iomgr/load_file.h +2 -2
  281. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  282. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  283. data/src/core/lib/iomgr/pollset.cc +5 -5
  284. data/src/core/lib/iomgr/pollset.h +9 -9
  285. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  286. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  287. data/src/core/lib/iomgr/port.h +1 -1
  288. data/src/core/lib/iomgr/python_util.h +1 -1
  289. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  290. data/src/core/lib/iomgr/resolve_address.h +6 -6
  291. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  292. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  293. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  294. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  295. data/src/core/lib/iomgr/resource_quota.cc +12 -11
  296. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  297. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  298. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  299. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  300. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  301. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  302. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  303. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  304. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  305. data/src/core/lib/iomgr/tcp_posix.cc +37 -38
  306. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  307. data/src/core/lib/iomgr/tcp_server.h +12 -11
  308. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  309. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  310. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  311. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  312. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  313. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  314. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  315. data/src/core/lib/iomgr/tcp_uv.cc +27 -25
  316. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  317. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  318. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  319. data/src/core/lib/iomgr/timer_custom.h +1 -1
  320. data/src/core/lib/iomgr/timer_generic.cc +8 -8
  321. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  322. data/src/core/lib/iomgr/udp_server.cc +21 -20
  323. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  324. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  325. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  326. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  327. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  328. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  329. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  330. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  331. data/src/core/lib/iomgr/work_serializer.h +17 -1
  332. data/src/core/lib/json/json.h +1 -1
  333. data/src/core/lib/json/json_reader.cc +4 -4
  334. data/src/core/lib/{security/authorization → matchers}/matchers.cc +47 -47
  335. data/src/core/lib/{security/authorization → matchers}/matchers.h +42 -40
  336. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  337. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  338. data/src/core/lib/security/credentials/credentials.h +2 -2
  339. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  340. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  341. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  342. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  343. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  344. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  345. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  346. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  347. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  348. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  349. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  350. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  351. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  352. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  353. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  354. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  355. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  356. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  357. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  358. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  359. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  360. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  361. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  362. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  363. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  364. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  365. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  366. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  367. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  368. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  369. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  370. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  371. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  372. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  373. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  374. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  375. data/src/core/lib/security/security_connector/ssl_utils.cc +28 -8
  376. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  377. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +62 -60
  378. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  379. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  380. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  381. data/src/core/lib/security/transport/security_handshaker.cc +65 -34
  382. data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
  383. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  384. data/src/core/lib/security/transport/tsi_error.h +2 -1
  385. data/src/core/lib/security/util/json_util.cc +2 -2
  386. data/src/core/lib/security/util/json_util.h +1 -1
  387. data/src/core/lib/slice/slice_intern.cc +6 -7
  388. data/src/core/lib/surface/call.cc +46 -45
  389. data/src/core/lib/surface/call.h +2 -2
  390. data/src/core/lib/surface/channel.cc +6 -6
  391. data/src/core/lib/surface/channel.h +6 -5
  392. data/src/core/lib/surface/channel_ping.cc +1 -1
  393. data/src/core/lib/surface/completion_queue.cc +46 -47
  394. data/src/core/lib/surface/completion_queue.h +2 -1
  395. data/src/core/lib/surface/lame_client.cc +43 -24
  396. data/src/core/lib/surface/lame_client.h +4 -3
  397. data/src/core/lib/surface/server.cc +68 -55
  398. data/src/core/lib/surface/server.h +89 -29
  399. data/src/core/lib/surface/validate_metadata.cc +7 -7
  400. data/src/core/lib/surface/validate_metadata.h +3 -2
  401. data/src/core/lib/surface/version.cc +4 -2
  402. data/src/core/lib/transport/byte_stream.cc +5 -5
  403. data/src/core/lib/transport/byte_stream.h +8 -8
  404. data/src/core/lib/transport/connectivity_state.cc +1 -1
  405. data/src/core/lib/transport/error_utils.cc +19 -8
  406. data/src/core/lib/transport/error_utils.h +11 -5
  407. data/src/core/lib/transport/metadata_batch.cc +64 -37
  408. data/src/core/lib/transport/metadata_batch.h +33 -18
  409. data/src/core/lib/transport/transport.cc +4 -3
  410. data/src/core/lib/transport/transport.h +4 -4
  411. data/src/core/lib/transport/transport_op_string.cc +5 -5
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  413. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +6 -8
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  416. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  417. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  418. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
  419. data/src/core/tsi/fake_transport_security.cc +10 -1
  420. data/src/core/tsi/ssl_transport_security.cc +32 -14
  421. data/src/core/tsi/ssl_transport_security.h +3 -4
  422. data/src/ruby/bin/math_services_pb.rb +1 -1
  423. data/src/ruby/ext/grpc/extconf.rb +9 -1
  424. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  425. data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
  426. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  427. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  428. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  429. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  430. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  431. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
  432. data/src/ruby/ext/grpc/rb_server.c +13 -1
  433. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  434. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  435. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  436. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  437. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  438. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  439. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  440. data/src/ruby/lib/grpc/version.rb +1 -1
  441. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  442. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  443. data/src/ruby/spec/call_spec.rb +1 -1
  444. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  445. data/src/ruby/spec/channel_spec.rb +17 -6
  446. data/src/ruby/spec/client_auth_spec.rb +27 -1
  447. data/src/ruby/spec/errors_spec.rb +1 -1
  448. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  449. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  450. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  451. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  452. data/src/ruby/spec/server_spec.rb +22 -0
  453. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  454. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  455. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  456. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  457. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  458. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  459. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  460. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  461. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  462. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  463. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  464. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  465. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  466. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  467. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  468. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  469. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  470. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  471. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  472. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  473. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  474. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  475. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  476. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  477. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  478. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  479. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  480. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  481. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  482. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  483. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  484. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  485. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  486. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  487. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  488. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  489. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  490. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  491. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  492. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  493. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  494. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  495. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  496. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  497. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  498. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  499. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  500. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  501. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  502. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  503. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  504. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  505. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  506. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  507. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  508. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  509. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  510. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  511. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  512. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  513. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  514. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  515. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  516. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  517. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  518. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  519. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  520. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  521. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  522. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  523. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  524. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  525. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  526. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  527. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  528. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  529. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  530. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  531. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  532. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  533. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  534. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  535. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  536. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  537. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  538. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  539. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  540. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  541. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  542. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  543. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  544. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  545. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  546. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  547. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  548. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  549. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  550. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  551. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  552. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  553. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  554. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  555. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  556. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  557. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  558. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  559. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  560. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  561. data/third_party/boringssl-with-bazel/err_data.c +478 -462
  562. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  563. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  564. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  565. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  566. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  567. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  568. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  569. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  570. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  571. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  572. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  573. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  574. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  575. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  576. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  577. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  584. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  585. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  586. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  587. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  588. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  589. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  590. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  591. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  592. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  593. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  594. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +7 -5
  595. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  596. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  597. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  598. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  599. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  600. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  601. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  602. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  603. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  604. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  605. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  606. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  607. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  608. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  609. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  610. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  611. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  612. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  613. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -30
  614. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  615. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  616. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  617. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  618. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  619. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  620. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  621. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  622. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
  623. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  624. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  625. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  626. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  627. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  628. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  629. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -4
  630. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  631. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  632. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  633. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  634. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  635. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  636. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  637. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  638. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  639. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  640. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  641. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +210 -26
  642. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  643. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -122
  644. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  645. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  646. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  647. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  648. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  649. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  650. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  651. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  652. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  653. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  654. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  655. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +131 -83
  656. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  657. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  658. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  659. data/third_party/xxhash/xxhash.h +5443 -0
  660. metadata +128 -61
  661. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  662. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  663. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  664. data/src/core/lib/security/authorization/authorization_engine.h +0 -84
  665. data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
  666. data/src/core/lib/security/authorization/evaluate_args.h +0 -59
  667. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  668. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  669. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  670. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -99
  671. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  672. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  673. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  674. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
  675. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  676. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  677. data/third_party/upb/upb/json_decode.c +0 -1443
  678. data/third_party/upb/upb/json_decode.h +0 -23
  679. data/third_party/upb/upb/json_encode.c +0 -713
  680. data/third_party/upb/upb/json_encode.h +0 -36
@@ -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 {
@@ -238,14 +238,14 @@ void grpc_ares_ev_driver_shutdown_locked(grpc_ares_ev_driver* ev_driver) {
238
238
  // Search fd in the fd_node list head. This is an O(n) search, the max possible
239
239
  // value of n is ARES_GETSOCK_MAXNUM (16). n is typically 1 - 2 in our tests.
240
240
  static fd_node* pop_fd_node_locked(fd_node** head, ares_socket_t as) {
241
- fd_node dummy_head;
242
- dummy_head.next = *head;
243
- fd_node* node = &dummy_head;
241
+ fd_node phony_head;
242
+ phony_head.next = *head;
243
+ fd_node* node = &phony_head;
244
244
  while (node->next != nullptr) {
245
245
  if (node->next->grpc_polled_fd->GetWrappedAresSocketLocked() == as) {
246
246
  fd_node* ret = node->next;
247
247
  node->next = node->next->next;
248
- *head = dummy_head.next;
248
+ *head = phony_head.next;
249
249
  return ret;
250
250
  }
251
251
  node = node->next;
@@ -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;
@@ -971,11 +980,7 @@ static bool target_matches_localhost_inner(const char* name, std::string* host,
971
980
  gpr_log(GPR_ERROR, "Unable to split host and port for name: %s", name);
972
981
  return false;
973
982
  }
974
- if (gpr_stricmp(host->c_str(), "localhost") == 0) {
975
- return true;
976
- } else {
977
- return false;
978
- }
983
+ return gpr_stricmp(host->c_str(), "localhost") == 0;
979
984
  }
980
985
 
981
986
  static bool target_matches_localhost(const char* name) {
@@ -1120,7 +1125,7 @@ void (*grpc_cancel_ares_request_locked)(grpc_ares_request* r) =
1120
1125
  // Windows. Calling them may cause race conditions when other parts of the
1121
1126
  // binary calls these functions concurrently.
1122
1127
  #ifdef GPR_WINDOWS
1123
- grpc_error* grpc_ares_init(void) {
1128
+ grpc_error_handle grpc_ares_init(void) {
1124
1129
  int status = ares_library_init(ARES_LIB_INIT_ALL);
1125
1130
  if (status != ARES_SUCCESS) {
1126
1131
  return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
@@ -1132,7 +1137,7 @@ grpc_error* grpc_ares_init(void) {
1132
1137
 
1133
1138
  void grpc_ares_cleanup(void) { ares_library_cleanup(); }
1134
1139
  #else
1135
- grpc_error* grpc_ares_init(void) { return GRPC_ERROR_NONE; }
1140
+ grpc_error_handle grpc_ares_init(void) { return GRPC_ERROR_NONE; }
1136
1141
  void grpc_ares_cleanup(void) {}
1137
1142
  #endif // GPR_WINDOWS
1138
1143
 
@@ -1163,7 +1168,7 @@ typedef struct grpc_resolve_address_ares_request {
1163
1168
  } grpc_resolve_address_ares_request;
1164
1169
 
1165
1170
  static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
1166
- grpc_error* error) {
1171
+ grpc_error_handle error) {
1167
1172
  gpr_free(r->ares_request);
1168
1173
  grpc_resolved_addresses** resolved_addresses = r->addrs_out;
1169
1174
  if (r->addresses == nullptr || r->addresses->empty()) {
@@ -1184,7 +1189,7 @@ static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
1184
1189
  delete r;
1185
1190
  }
1186
1191
 
1187
- static void on_dns_lookup_done(void* arg, grpc_error* error) {
1192
+ static void on_dns_lookup_done(void* arg, grpc_error_handle error) {
1188
1193
  grpc_resolve_address_ares_request* r =
1189
1194
  static_cast<grpc_resolve_address_ares_request*>(arg);
1190
1195
  GRPC_ERROR_REF(error); // ref owned by lambda
@@ -76,7 +76,7 @@ extern void (*grpc_cancel_ares_request_locked)(grpc_ares_request* request);
76
76
 
77
77
  /* Initialize gRPC ares wrapper. Must be called at least once before
78
78
  grpc_resolve_address_ares(). */
79
- grpc_error* grpc_ares_init(void);
79
+ grpc_error_handle grpc_ares_init(void);
80
80
 
81
81
  /* Uninitialized gRPC ares wrapper. If there was more than one previous call to
82
82
  grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
27
27
  #include "src/core/ext/filters/client_channel/server_address.h"
28
+ #include "src/core/lib/address_utils/parse_address.h"
28
29
  #include "src/core/lib/gpr/string.h"
29
- #include "src/core/lib/iomgr/parse_address.h"
30
30
 
31
31
  bool grpc_ares_query_ipv6() {
32
32
  /* The libuv grpc code currently does not have the code to probe for this,
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
27
27
  #include "src/core/ext/filters/client_channel/server_address.h"
28
+ #include "src/core/lib/address_utils/parse_address.h"
28
29
  #include "src/core/lib/gpr/string.h"
29
- #include "src/core/lib/iomgr/parse_address.h"
30
30
  #include "src/core/lib/iomgr/socket_windows.h"
31
31
 
32
32
  bool grpc_ares_query_ipv6() { return grpc_ipv6_loopback_available(); }
@@ -68,10 +68,10 @@ class NativeDnsResolver : public Resolver {
68
68
  void MaybeStartResolvingLocked();
69
69
  void StartResolvingLocked();
70
70
 
71
- static void OnNextResolution(void* arg, grpc_error* error);
72
- void OnNextResolutionLocked(grpc_error* error);
73
- static void OnResolved(void* arg, grpc_error* error);
74
- void OnResolvedLocked(grpc_error* error);
71
+ static void OnNextResolution(void* arg, grpc_error_handle error);
72
+ void OnNextResolutionLocked(grpc_error_handle error);
73
+ static void OnResolved(void* arg, grpc_error_handle error);
74
+ void OnResolvedLocked(grpc_error_handle error);
75
75
 
76
76
  /// name to resolve
77
77
  std::string name_to_resolve_;
@@ -148,14 +148,14 @@ void NativeDnsResolver::ShutdownLocked() {
148
148
  }
149
149
  }
150
150
 
151
- void NativeDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
151
+ void NativeDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
152
152
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
153
153
  GRPC_ERROR_REF(error); // ref owned by lambda
154
154
  r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
155
155
  DEBUG_LOCATION);
156
156
  }
157
157
 
158
- void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
158
+ void NativeDnsResolver::OnNextResolutionLocked(grpc_error_handle error) {
159
159
  have_next_resolution_timer_ = false;
160
160
  if (error == GRPC_ERROR_NONE && !resolving_) {
161
161
  StartResolvingLocked();
@@ -164,14 +164,14 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
164
164
  GRPC_ERROR_UNREF(error);
165
165
  }
166
166
 
167
- void NativeDnsResolver::OnResolved(void* arg, grpc_error* error) {
167
+ void NativeDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
168
168
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
169
169
  GRPC_ERROR_REF(error); // owned by lambda
170
170
  r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
171
171
  DEBUG_LOCATION);
172
172
  }
173
173
 
174
- void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
174
+ void NativeDnsResolver::OnResolvedLocked(grpc_error_handle error) {
175
175
  GPR_ASSERT(resolving_);
176
176
  resolving_ = false;
177
177
  if (shutdown_) {
@@ -194,7 +194,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
194
194
  backoff_.Reset();
195
195
  } else {
196
196
  gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
197
- grpc_error_string(error));
197
+ grpc_error_std_string(error).c_str());
198
198
  // Return transient error.
199
199
  std::string error_message =
200
200
  absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
@@ -203,6 +203,10 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
203
203
  &error, 1),
204
204
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
205
205
  // Set up for retry.
206
+ // InvalidateNow to avoid getting stuck re-initializing this timer
207
+ // in a loop while draining the currently-held WorkSerializer.
208
+ // Also see https://github.com/grpc/grpc/issues/26079.
209
+ ExecCtx::Get()->InvalidateNow();
206
210
  grpc_millis next_try = backoff_.NextAttemptTime();
207
211
  grpc_millis timeout = next_try - ExecCtx::Get()->Now();
208
212
  GPR_ASSERT(!have_next_resolution_timer_);
@@ -229,6 +233,10 @@ void NativeDnsResolver::MaybeStartResolvingLocked() {
229
233
  // can start the next resolution.
230
234
  if (have_next_resolution_timer_) return;
231
235
  if (last_resolution_timestamp_ >= 0) {
236
+ // InvalidateNow to avoid getting stuck re-initializing this timer
237
+ // in a loop while draining the currently-held WorkSerializer.
238
+ // Also see https://github.com/grpc/grpc/issues/26079.
239
+ ExecCtx::Get()->InvalidateNow();
232
240
  const grpc_millis earliest_next_resolution =
233
241
  last_resolution_timestamp_ + min_time_between_resolutions_;
234
242
  const grpc_millis ms_until_next_resolution =
@@ -30,11 +30,11 @@
30
30
 
31
31
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
32
32
  #include "src/core/ext/filters/client_channel/server_address.h"
33
+ #include "src/core/lib/address_utils/parse_address.h"
33
34
  #include "src/core/lib/channel/channel_args.h"
34
35
  #include "src/core/lib/gpr/string.h"
35
36
  #include "src/core/lib/gpr/useful.h"
36
37
  #include "src/core/lib/iomgr/closure.h"
37
- #include "src/core/lib/iomgr/parse_address.h"
38
38
  #include "src/core/lib/iomgr/resolve_address.h"
39
39
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
40
40
  #include "src/core/lib/iomgr/work_serializer.h"
@@ -313,48 +313,40 @@ void FakeResolverResponseGenerator::SetFakeResolver(
313
313
 
314
314
  namespace {
315
315
 
316
- static void* response_generator_arg_copy(void* p) {
317
- FakeResolverResponseGenerator* generator =
318
- static_cast<FakeResolverResponseGenerator*>(p);
319
- // TODO(roth): We currently deal with this ref manually. Once the
320
- // new channel args code is converted to C++, find a way to track this ref
321
- // in a cleaner way.
322
- RefCountedPtr<FakeResolverResponseGenerator> copy = generator->Ref();
323
- copy.release();
316
+ void* ResponseGeneratorChannelArgCopy(void* p) {
317
+ auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
318
+ generator->Ref().release();
324
319
  return p;
325
320
  }
326
321
 
327
- static void response_generator_arg_destroy(void* p) {
328
- FakeResolverResponseGenerator* generator =
329
- static_cast<FakeResolverResponseGenerator*>(p);
322
+ void ResponseGeneratorChannelArgDestroy(void* p) {
323
+ auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
330
324
  generator->Unref();
331
325
  }
332
326
 
333
- static int response_generator_cmp(void* a, void* b) { return GPR_ICMP(a, b); }
334
-
335
- static const grpc_arg_pointer_vtable response_generator_arg_vtable = {
336
- response_generator_arg_copy, response_generator_arg_destroy,
337
- response_generator_cmp};
327
+ int ResponseGeneratorChannelArgCmp(void* a, void* b) { return GPR_ICMP(a, b); }
338
328
 
339
329
  } // namespace
340
330
 
331
+ const grpc_arg_pointer_vtable
332
+ FakeResolverResponseGenerator::kChannelArgPointerVtable = {
333
+ ResponseGeneratorChannelArgCopy, ResponseGeneratorChannelArgDestroy,
334
+ ResponseGeneratorChannelArgCmp};
335
+
341
336
  grpc_arg FakeResolverResponseGenerator::MakeChannelArg(
342
337
  FakeResolverResponseGenerator* generator) {
343
- grpc_arg arg;
344
- arg.type = GRPC_ARG_POINTER;
345
- arg.key = const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
346
- arg.value.pointer.p = generator;
347
- arg.value.pointer.vtable = &response_generator_arg_vtable;
348
- return arg;
338
+ return grpc_channel_arg_pointer_create(
339
+ const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR), generator,
340
+ &kChannelArgPointerVtable);
349
341
  }
350
342
 
351
343
  RefCountedPtr<FakeResolverResponseGenerator>
352
344
  FakeResolverResponseGenerator::GetFromArgs(const grpc_channel_args* args) {
353
- const grpc_arg* arg =
354
- grpc_channel_args_find(args, GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
355
- if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
356
- return static_cast<FakeResolverResponseGenerator*>(arg->value.pointer.p)
357
- ->Ref();
345
+ auto* response_generator =
346
+ grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
347
+ args, GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
348
+ if (response_generator == nullptr) return nullptr;
349
+ return response_generator->Ref();
358
350
  }
359
351
 
360
352
  //
@@ -42,6 +42,8 @@ class FakeResolver;
42
42
  class FakeResolverResponseGenerator
43
43
  : public RefCounted<FakeResolverResponseGenerator> {
44
44
  public:
45
+ static const grpc_arg_pointer_vtable kChannelArgPointerVtable;
46
+
45
47
  FakeResolverResponseGenerator();
46
48
  ~FakeResolverResponseGenerator() override;
47
49
 
@@ -69,6 +71,7 @@ class FakeResolverResponseGenerator
69
71
  void SetFailureOnReresolution();
70
72
 
71
73
  // Returns a channel arg containing \a generator.
74
+ // TODO(roth): When we have time, make this a non-static method.
72
75
  static grpc_arg MakeChannelArg(FakeResolverResponseGenerator* generator);
73
76
 
74
77
  // Returns the response generator in \a args, or null if not found.
@@ -82,12 +85,11 @@ class FakeResolverResponseGenerator
82
85
 
83
86
  // Mutex protecting the members below.
84
87
  Mutex mu_;
85
- RefCountedPtr<FakeResolver> resolver_;
86
- Resolver::Result result_;
87
- bool has_result_ = false;
88
+ RefCountedPtr<FakeResolver> resolver_ ABSL_GUARDED_BY(mu_);
89
+ Resolver::Result result_ ABSL_GUARDED_BY(mu_);
90
+ bool has_result_ ABSL_GUARDED_BY(mu_) = false;
88
91
  };
89
92
 
90
93
  } // namespace grpc_core
91
94
 
92
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H \
93
- */
95
+ #endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H