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
@@ -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
@@ -24,73 +24,33 @@
24
24
 
25
25
  namespace grpc_core {
26
26
 
27
- LocalSubchannelPool::LocalSubchannelPool() {
28
- subchannel_map_ = grpc_avl_create(&subchannel_avl_vtable_);
27
+ RefCountedPtr<Subchannel> LocalSubchannelPool::RegisterSubchannel(
28
+ const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) {
29
+ auto it = subchannel_map_.find(key);
30
+ // Because this pool is only accessed under the client channel's work
31
+ // serializer, and because FindSubchannel is checked before invoking
32
+ // RegisterSubchannel, no such subchannel should exist in the map.
33
+ GPR_ASSERT(it == subchannel_map_.end());
34
+ subchannel_map_[key] = constructed.get();
35
+ return constructed;
36
+ }
37
+
38
+ void LocalSubchannelPool::UnregisterSubchannel(const SubchannelKey& key,
39
+ Subchannel* subchannel) {
40
+ auto it = subchannel_map_.find(key);
41
+ // Because this subchannel pool is accessed only under the client
42
+ // channel's work serializer, any subchannel created by RegisterSubchannel
43
+ // will be deleted from the map in UnregisterSubchannel.
44
+ GPR_ASSERT(it != subchannel_map_.end());
45
+ GPR_ASSERT(it->second == subchannel);
46
+ subchannel_map_.erase(it);
47
+ }
48
+
49
+ RefCountedPtr<Subchannel> LocalSubchannelPool::FindSubchannel(
50
+ const SubchannelKey& key) {
51
+ auto it = subchannel_map_.find(key);
52
+ if (it == subchannel_map_.end()) return nullptr;
53
+ return it->second->Ref();
29
54
  }
30
55
 
31
- LocalSubchannelPool::~LocalSubchannelPool() {
32
- grpc_avl_unref(subchannel_map_, nullptr);
33
- }
34
-
35
- Subchannel* LocalSubchannelPool::RegisterSubchannel(SubchannelKey* key,
36
- Subchannel* constructed) {
37
- // Check to see if a subchannel already exists.
38
- Subchannel* c =
39
- static_cast<Subchannel*>(grpc_avl_get(subchannel_map_, key, nullptr));
40
- if (c != nullptr) {
41
- // The subchannel already exists. Reuse it.
42
- c = GRPC_SUBCHANNEL_REF(c, "subchannel_register+reuse");
43
- GRPC_SUBCHANNEL_UNREF(constructed, "subchannel_register+found_existing");
44
- } else {
45
- // There hasn't been such subchannel. Add one.
46
- subchannel_map_ = grpc_avl_add(subchannel_map_, new SubchannelKey(*key),
47
- constructed, nullptr);
48
- c = constructed;
49
- }
50
- return c;
51
- }
52
-
53
- void LocalSubchannelPool::UnregisterSubchannel(SubchannelKey* key) {
54
- subchannel_map_ = grpc_avl_remove(subchannel_map_, key, nullptr);
55
- }
56
-
57
- Subchannel* LocalSubchannelPool::FindSubchannel(SubchannelKey* key) {
58
- Subchannel* c =
59
- static_cast<Subchannel*>(grpc_avl_get(subchannel_map_, key, nullptr));
60
- return c == nullptr ? c : GRPC_SUBCHANNEL_REF(c, "found_from_pool");
61
- }
62
-
63
- namespace {
64
-
65
- void sck_avl_destroy(void* p, void* /*user_data*/) {
66
- SubchannelKey* key = static_cast<SubchannelKey*>(p);
67
- delete key;
68
- }
69
-
70
- void* sck_avl_copy(void* p, void* /*unused*/) {
71
- const SubchannelKey* key = static_cast<const SubchannelKey*>(p);
72
- auto new_key = new SubchannelKey(*key);
73
- return static_cast<void*>(new_key);
74
- }
75
-
76
- long sck_avl_compare(void* a, void* b, void* /*unused*/) {
77
- const SubchannelKey* key_a = static_cast<const SubchannelKey*>(a);
78
- const SubchannelKey* key_b = static_cast<const SubchannelKey*>(b);
79
- return key_a->Cmp(*key_b);
80
- }
81
-
82
- void scv_avl_destroy(void* /*p*/, void* /*user_data*/) {}
83
-
84
- void* scv_avl_copy(void* p, void* /*unused*/) { return p; }
85
-
86
- } // namespace
87
-
88
- const grpc_avl_vtable LocalSubchannelPool::subchannel_avl_vtable_ = {
89
- sck_avl_destroy, // destroy_key
90
- sck_avl_copy, // copy_key
91
- sck_avl_compare, // compare_keys
92
- scv_avl_destroy, // destroy_value
93
- scv_avl_copy // copy_value
94
- };
95
-
96
56
  } // namespace grpc_core
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <map>
25
+
24
26
  #include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
25
27
 
26
28
  namespace grpc_core {
@@ -34,22 +36,21 @@ namespace grpc_core {
34
36
  // Thread-unsafe.
35
37
  class LocalSubchannelPool final : public SubchannelPoolInterface {
36
38
  public:
37
- LocalSubchannelPool();
38
- ~LocalSubchannelPool() override;
39
+ LocalSubchannelPool() {}
40
+ ~LocalSubchannelPool() override {}
39
41
 
40
42
  // Implements interface methods.
41
43
  // Thread-unsafe. Intended to be invoked within the client_channel work
42
44
  // serializer.
43
- Subchannel* RegisterSubchannel(SubchannelKey* key,
44
- Subchannel* constructed) override;
45
- void UnregisterSubchannel(SubchannelKey* key) override;
46
- Subchannel* FindSubchannel(SubchannelKey* key) override;
45
+ RefCountedPtr<Subchannel> RegisterSubchannel(
46
+ const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) override;
47
+ void UnregisterSubchannel(const SubchannelKey& key,
48
+ Subchannel* subchannel) override;
49
+ RefCountedPtr<Subchannel> FindSubchannel(const SubchannelKey& key) override;
47
50
 
48
51
  private:
49
- // The vtable for subchannel operations in an AVL tree.
50
- static const grpc_avl_vtable subchannel_avl_vtable_;
51
52
  // A map from subchannel key to subchannel.
52
- grpc_avl subchannel_map_;
53
+ std::map<SubchannelKey, Subchannel*> subchannel_map_;
53
54
  };
54
55
 
55
56
  } // namespace grpc_core
@@ -60,6 +60,9 @@ Resolver::Result::Result(Result&& other) noexcept {
60
60
  }
61
61
 
62
62
  Resolver::Result& Resolver::Result::operator=(const Result& other) {
63
+ if (&other == this) {
64
+ return *this;
65
+ }
63
66
  addresses = other.addresses;
64
67
  service_config = other.service_config;
65
68
  GRPC_ERROR_UNREF(service_config_error);
@@ -55,7 +55,7 @@ class Resolver : public InternallyRefCounted<Resolver> {
55
55
  struct Result {
56
56
  ServerAddressList addresses;
57
57
  RefCountedPtr<ServiceConfig> service_config;
58
- grpc_error* service_config_error = GRPC_ERROR_NONE;
58
+ grpc_error_handle service_config_error = GRPC_ERROR_NONE;
59
59
  const grpc_channel_args* args = nullptr;
60
60
 
61
61
  // TODO(roth): Remove everything below once grpc_error and
@@ -81,7 +81,7 @@ class Resolver : public InternallyRefCounted<Resolver> {
81
81
  /// Returns a transient error to the channel.
82
82
  /// If the resolver does not set the GRPC_ERROR_INT_GRPC_STATUS
83
83
  /// attribute on the error, calls will be failed with status UNKNOWN.
84
- virtual void ReturnError(grpc_error* error) = 0;
84
+ virtual void ReturnError(grpc_error_handle error) = 0;
85
85
 
86
86
  // TODO(yashkt): As part of the service config error handling
87
87
  // changes, add a method to parse the service config JSON string.
@@ -80,10 +80,10 @@ class AresDnsResolver : public Resolver {
80
80
  void MaybeStartResolvingLocked();
81
81
  void StartResolvingLocked();
82
82
 
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);
83
+ static void OnNextResolution(void* arg, grpc_error_handle error);
84
+ static void OnResolved(void* arg, grpc_error_handle error);
85
+ void OnNextResolutionLocked(grpc_error_handle error);
86
+ void OnResolvedLocked(grpc_error_handle error);
87
87
 
88
88
  /// DNS server to use (if not system default)
89
89
  std::string dns_server_;
@@ -193,18 +193,18 @@ void AresDnsResolver::ShutdownLocked() {
193
193
  }
194
194
  }
195
195
 
196
- void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
196
+ void AresDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
197
197
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
198
198
  GRPC_ERROR_REF(error); // ref owned by lambda
199
199
  r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
200
200
  DEBUG_LOCATION);
201
201
  }
202
202
 
203
- void AresDnsResolver::OnNextResolutionLocked(grpc_error* error) {
203
+ void AresDnsResolver::OnNextResolutionLocked(grpc_error_handle error) {
204
204
  GRPC_CARES_TRACE_LOG(
205
205
  "resolver:%p re-resolution timer fired. error: %s. shutdown_initiated_: "
206
206
  "%d",
207
- this, grpc_error_string(error), shutdown_initiated_);
207
+ this, grpc_error_std_string(error).c_str(), shutdown_initiated_);
208
208
  have_next_resolution_timer_ = false;
209
209
  if (error == GRPC_ERROR_NONE && !shutdown_initiated_) {
210
210
  if (!resolving_) {
@@ -227,7 +227,7 @@ bool ValueInJsonArray(const Json::Array& array, const char* value) {
227
227
  }
228
228
 
229
229
  std::string ChooseServiceConfig(char* service_config_choice_json,
230
- grpc_error** error) {
230
+ grpc_error_handle* error) {
231
231
  Json json = Json::Parse(service_config_choice_json, error);
232
232
  if (*error != GRPC_ERROR_NONE) return "";
233
233
  if (json.type() != Json::Type::ARRAY) {
@@ -236,7 +236,7 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
236
236
  return "";
237
237
  }
238
238
  const Json* service_config = nullptr;
239
- absl::InlinedVector<grpc_error*, 4> error_list;
239
+ absl::InlinedVector<grpc_error_handle, 4> error_list;
240
240
  for (const Json& choice : json.array_value()) {
241
241
  if (choice.type() != Json::Type::OBJECT) {
242
242
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -305,14 +305,14 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
305
305
  return service_config->Dump();
306
306
  }
307
307
 
308
- void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
308
+ void AresDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
309
309
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
310
310
  GRPC_ERROR_REF(error); // ref owned by lambda
311
311
  r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
312
312
  DEBUG_LOCATION);
313
313
  }
314
314
 
315
- void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
315
+ void AresDnsResolver::OnResolvedLocked(grpc_error_handle error) {
316
316
  GPR_ASSERT(resolving_);
317
317
  resolving_ = false;
318
318
  gpr_free(pending_request_);
@@ -354,7 +354,7 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
354
354
  backoff_.Reset();
355
355
  } else {
356
356
  GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed: %s", this,
357
- grpc_error_string(error));
357
+ grpc_error_std_string(error).c_str());
358
358
  std::string error_message =
359
359
  absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
360
360
  result_handler_->ReturnError(grpc_error_set_int(
@@ -362,10 +362,14 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
362
362
  &error, 1),
363
363
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
364
364
  // Set retry timer.
365
+ // InvalidateNow to avoid getting stuck re-initializing this timer
366
+ // in a loop while draining the currently-held WorkSerializer.
367
+ // Also see https://github.com/grpc/grpc/issues/26079.
368
+ ExecCtx::Get()->InvalidateNow();
365
369
  grpc_millis next_try = backoff_.NextAttemptTime();
366
370
  grpc_millis timeout = next_try - ExecCtx::Get()->Now();
367
371
  GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed (will retry): %s",
368
- this, grpc_error_string(error));
372
+ this, grpc_error_std_string(error).c_str());
369
373
  GPR_ASSERT(!have_next_resolution_timer_);
370
374
  have_next_resolution_timer_ = true;
371
375
  // TODO(roth): We currently deal with this ref manually. Once the
@@ -389,6 +393,10 @@ void AresDnsResolver::MaybeStartResolvingLocked() {
389
393
  // can start the next resolution.
390
394
  if (have_next_resolution_timer_) return;
391
395
  if (last_resolution_timestamp_ >= 0) {
396
+ // InvalidateNow to avoid getting stuck re-initializing this timer
397
+ // in a loop while draining the currently-held WorkSerializer.
398
+ // Also see https://github.com/grpc/grpc/issues/26079.
399
+ ExecCtx::Get()->InvalidateNow();
392
400
  const grpc_millis earliest_next_resolution =
393
401
  last_resolution_timestamp_ + min_time_between_resolutions_;
394
402
  const grpc_millis ms_until_next_resolution =
@@ -455,7 +463,7 @@ class AresDnsResolverFactory : public ResolverFactory {
455
463
  extern grpc_address_resolver_vtable* grpc_resolve_address_impl;
456
464
  static grpc_address_resolver_vtable* default_resolver;
457
465
 
458
- static grpc_error* blocking_resolve_address_ares(
466
+ static grpc_error_handle blocking_resolve_address_ares(
459
467
  const char* name, const char* default_port,
460
468
  grpc_resolved_addresses** addresses) {
461
469
  return default_resolver->blocking_resolve_address(name, default_port,
@@ -490,7 +498,7 @@ void grpc_resolver_dns_ares_init() {
490
498
  g_use_ares_dns_resolver = true;
491
499
  gpr_log(GPR_DEBUG, "Using ares dns resolver");
492
500
  address_sorting_init();
493
- grpc_error* error = grpc_ares_init();
501
+ grpc_error_handle error = grpc_ares_init();
494
502
  if (error != GRPC_ERROR_NONE) {
495
503
  GRPC_LOG_IF_ERROR("grpc_ares_init() failed", error);
496
504
  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 */
@@ -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
 
@@ -54,8 +54,8 @@ class GrpcPolledFdPosix : public GrpcPolledFd {
54
54
  /* c-ares library will close the fd inside grpc_fd. This fd may be picked up
55
55
  immediately by another thread, and should not be closed by the following
56
56
  grpc_fd_orphan. */
57
- int dummy_release_fd;
58
- grpc_fd_orphan(fd_, nullptr, &dummy_release_fd, "c-ares query finished");
57
+ int phony_release_fd;
58
+ grpc_fd_orphan(fd_, nullptr, &phony_release_fd, "c-ares query finished");
59
59
  }
60
60
 
61
61
  void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
@@ -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
  }
@@ -251,9 +251,9 @@ class GrpcPolledFdWindows {
251
251
  }
252
252
  }
253
253
 
254
- bool IsFdStillReadableLocked() { return GRPC_SLICE_LENGTH(read_buf_) > 0; }
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
 
@@ -362,6 +362,8 @@ class GrpcPolledFdWindows {
362
362
  DWORD bytes_sent = 0;
363
363
  int wsa_error_code = 0;
364
364
  if (SendWriteBuf(&bytes_sent, nullptr, &wsa_error_code) != 0) {
365
+ grpc_slice_unref_internal(write_buf_);
366
+ write_buf_ = grpc_empty_slice();
365
367
  wsa_error_ctx->SetWSAError(wsa_error_code);
366
368
  char* msg = gpr_format_message(wsa_error_code);
367
369
  GRPC_CARES_TRACE_LOG(
@@ -418,7 +420,7 @@ class GrpcPolledFdWindows {
418
420
  abort();
419
421
  }
420
422
 
421
- static void OnTcpConnect(void* arg, grpc_error* error) {
423
+ static void OnTcpConnect(void* arg, grpc_error_handle error) {
422
424
  GrpcPolledFdWindows* grpc_polled_fd =
423
425
  static_cast<GrpcPolledFdWindows*>(arg);
424
426
  GRPC_ERROR_REF(error); // ref owned by lambda
@@ -429,12 +431,12 @@ class GrpcPolledFdWindows {
429
431
  DEBUG_LOCATION);
430
432
  }
431
433
 
432
- void OnTcpConnectLocked(grpc_error* error) {
434
+ void OnTcpConnectLocked(grpc_error_handle error) {
433
435
  GRPC_CARES_TRACE_LOG(
434
436
  "fd:%s InnerOnTcpConnectLocked error:|%s| "
435
437
  "pending_register_for_readable:%d"
436
438
  " pending_register_for_writeable:%d",
437
- GetName(), grpc_error_string(error),
439
+ GetName(), grpc_error_std_string(error).c_str(),
438
440
  pending_continue_register_for_on_readable_locked_,
439
441
  pending_continue_register_for_on_writeable_locked_);
440
442
  GPR_ASSERT(!connect_done_);
@@ -574,7 +576,7 @@ class GrpcPolledFdWindows {
574
576
  return out;
575
577
  }
576
578
 
577
- static void OnIocpReadable(void* arg, grpc_error* error) {
579
+ static void OnIocpReadable(void* arg, grpc_error_handle error) {
578
580
  GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
579
581
  GRPC_ERROR_REF(error); // ref owned by lambda
580
582
  polled_fd->work_serializer_->Run(
@@ -587,7 +589,7 @@ class GrpcPolledFdWindows {
587
589
  // c-ares reads from this socket later, but it shouldn't necessarily cancel
588
590
  // the entire resolution attempt. Doing so will allow the "inject broken
589
591
  // nameserver list" test to pass on Windows.
590
- void OnIocpReadableLocked(grpc_error* error) {
592
+ void OnIocpReadableLocked(grpc_error_handle error) {
591
593
  if (error == GRPC_ERROR_NONE) {
592
594
  if (winsocket_->read_info.wsa_error != 0) {
593
595
  /* WSAEMSGSIZE would be due to receiving more data
@@ -601,7 +603,7 @@ class GrpcPolledFdWindows {
601
603
  "fd:|%s| OnIocpReadableInner winsocket_->read_info.wsa_error "
602
604
  "code:|%d| msg:|%s|",
603
605
  GetName(), winsocket_->read_info.wsa_error,
604
- grpc_error_string(error));
606
+ grpc_error_std_string(error).c_str());
605
607
  }
606
608
  }
607
609
  }
@@ -619,7 +621,7 @@ class GrpcPolledFdWindows {
619
621
  ScheduleAndNullReadClosure(error);
620
622
  }
621
623
 
622
- static void OnIocpWriteable(void* arg, grpc_error* error) {
624
+ static void OnIocpWriteable(void* arg, grpc_error_handle error) {
623
625
  GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
624
626
  GRPC_ERROR_REF(error); // error owned by lambda
625
627
  polled_fd->work_serializer_->Run(
@@ -627,7 +629,7 @@ class GrpcPolledFdWindows {
627
629
  DEBUG_LOCATION);
628
630
  }
629
631
 
630
- void OnIocpWriteableLocked(grpc_error* error) {
632
+ void OnIocpWriteableLocked(grpc_error_handle error) {
631
633
  GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName());
632
634
  GPR_ASSERT(socket_type_ == SOCK_STREAM);
633
635
  if (error == GRPC_ERROR_NONE) {
@@ -638,7 +640,7 @@ class GrpcPolledFdWindows {
638
640
  "fd:|%s| OnIocpWriteableInner. winsocket_->write_info.wsa_error "
639
641
  "code:|%d| msg:|%s|",
640
642
  GetName(), winsocket_->write_info.wsa_error,
641
- grpc_error_string(error));
643
+ grpc_error_std_string(error).c_str());
642
644
  }
643
645
  }
644
646
  GPR_ASSERT(tcp_write_state_ == WRITE_PENDING);
@@ -849,7 +851,7 @@ class GrpcPolledFdWindowsWrapper : public GrpcPolledFd {
849
851
  return wrapped_->IsFdStillReadableLocked();
850
852
  }
851
853
 
852
- void ShutdownLocked(grpc_error* error) override {
854
+ void ShutdownLocked(grpc_error_handle error) override {
853
855
  wrapped_->ShutdownLocked(error);
854
856
  }
855
857