grpc 1.37.1 → 1.39.0

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

Potentially problematic release.


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

Files changed (636) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +96 -59
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/endpoint_config.h +48 -0
  5. data/include/grpc/event_engine/event_engine.h +334 -0
  6. data/include/grpc/event_engine/port.h +41 -0
  7. data/include/grpc/event_engine/slice_allocator.h +91 -0
  8. data/include/grpc/grpc.h +11 -4
  9. data/include/grpc/grpc_security.h +32 -0
  10. data/include/grpc/grpc_security_constants.h +15 -0
  11. data/include/grpc/impl/codegen/grpc_types.h +28 -13
  12. data/include/grpc/impl/codegen/port_platform.h +22 -0
  13. data/include/grpc/module.modulemap +14 -14
  14. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  15. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  16. data/src/core/ext/filters/client_channel/client_channel.cc +630 -3103
  17. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  18. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  20. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  24. data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
  25. data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
  26. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +755 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -54
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +146 -155
  43. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  44. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  45. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  46. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
  60. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  61. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  62. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
  63. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  64. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -32
  65. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  66. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  67. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  68. data/src/core/ext/filters/client_channel/retry_filter.cc +2449 -0
  69. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  70. data/src/core/ext/filters/client_channel/retry_service_config.cc +306 -0
  71. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  72. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  73. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  74. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  75. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  76. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  77. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  78. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  79. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  80. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  81. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  82. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +25 -18
  83. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  84. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  85. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  86. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  87. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  88. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  89. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  90. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  91. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  92. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  93. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  94. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  95. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  96. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  97. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
  98. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  99. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  100. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  101. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  102. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
  103. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  104. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -120
  105. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  106. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  107. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  108. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  109. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  110. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  111. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  112. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  114. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  115. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  116. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  117. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  118. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  120. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  121. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  122. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  123. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  124. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  125. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  126. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  127. data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
  128. data/src/core/ext/transport/chttp2/transport/parsing.cc +65 -58
  129. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  130. data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
  131. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  132. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  133. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  134. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  135. data/src/core/ext/xds/xds_api.cc +348 -199
  136. data/src/core/ext/xds/xds_api.h +21 -12
  137. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  138. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  139. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  140. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  141. data/src/core/ext/xds/xds_channel_args.h +5 -2
  142. data/src/core/ext/xds/xds_client.cc +310 -178
  143. data/src/core/ext/xds/xds_client.h +41 -27
  144. data/src/core/ext/xds/xds_client_stats.h +3 -2
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  146. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  147. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  148. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
  149. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
  150. data/src/core/lib/channel/channel_stack.cc +10 -9
  151. data/src/core/lib/channel/channel_stack.h +10 -9
  152. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  153. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  154. data/src/core/lib/channel/channelz.cc +21 -13
  155. data/src/core/lib/channel/channelz.h +3 -0
  156. data/src/core/lib/channel/connected_channel.cc +4 -4
  157. data/src/core/lib/channel/handshaker.cc +7 -6
  158. data/src/core/lib/channel/handshaker.h +5 -5
  159. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  160. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  161. data/src/core/lib/event_engine/event_engine.cc +50 -0
  162. data/src/core/lib/event_engine/slice_allocator.cc +89 -0
  163. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  164. data/src/core/lib/event_engine/sockaddr.h +44 -0
  165. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  166. data/src/core/lib/gprpp/ref_counted.h +28 -14
  167. data/src/core/lib/gprpp/status_helper.cc +407 -0
  168. data/src/core/lib/gprpp/status_helper.h +183 -0
  169. data/src/core/lib/http/httpcli.cc +11 -11
  170. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  171. data/src/core/lib/http/parser.cc +16 -16
  172. data/src/core/lib/http/parser.h +4 -4
  173. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  174. data/src/core/lib/iomgr/buffer_list.h +4 -5
  175. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  176. data/src/core/lib/iomgr/call_combiner.h +12 -14
  177. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  178. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  179. data/src/core/lib/iomgr/closure.h +7 -6
  180. data/src/core/lib/iomgr/combiner.cc +14 -12
  181. data/src/core/lib/iomgr/combiner.h +2 -2
  182. data/src/core/lib/iomgr/endpoint.cc +1 -1
  183. data/src/core/lib/iomgr/endpoint.h +2 -2
  184. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  185. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  186. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  187. data/src/core/lib/iomgr/error.cc +168 -61
  188. data/src/core/lib/iomgr/error.h +217 -106
  189. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  190. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  191. data/src/core/lib/iomgr/error_internal.h +5 -1
  192. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  193. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  194. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  195. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  196. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  197. data/src/core/lib/iomgr/ev_posix.h +9 -9
  198. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  199. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  200. data/src/core/lib/iomgr/event_engine/endpoint.cc +194 -0
  201. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  202. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  203. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  204. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  205. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  206. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  207. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  208. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  209. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  210. data/src/core/lib/iomgr/event_engine/tcp.cc +243 -0
  211. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  212. data/src/core/lib/iomgr/exec_ctx.cc +12 -4
  213. data/src/core/lib/iomgr/exec_ctx.h +4 -5
  214. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  215. data/src/core/lib/iomgr/executor/threadpool.h +2 -2
  216. data/src/core/lib/iomgr/executor.cc +8 -8
  217. data/src/core/lib/iomgr/executor.h +2 -2
  218. data/src/core/lib/iomgr/iomgr.cc +2 -2
  219. data/src/core/lib/iomgr/iomgr.h +1 -1
  220. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  221. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  222. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  223. data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
  224. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
  225. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  226. data/src/core/lib/iomgr/load_file.cc +4 -4
  227. data/src/core/lib/iomgr/load_file.h +2 -2
  228. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  229. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  230. data/src/core/lib/iomgr/pollset.cc +5 -5
  231. data/src/core/lib/iomgr/pollset.h +9 -9
  232. data/src/core/lib/iomgr/pollset_custom.cc +7 -7
  233. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  234. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  235. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  236. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  237. data/src/core/lib/iomgr/port.h +7 -5
  238. data/src/core/lib/iomgr/python_util.h +1 -1
  239. data/src/core/lib/iomgr/resolve_address.cc +8 -4
  240. data/src/core/lib/iomgr/resolve_address.h +12 -6
  241. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  242. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  243. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  244. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  245. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  246. data/src/core/lib/iomgr/sockaddr.h +1 -0
  247. data/src/core/lib/iomgr/socket_mutator.cc +15 -2
  248. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  249. data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
  250. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  251. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  252. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  253. data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
  254. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  255. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  256. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  257. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  258. data/src/core/lib/iomgr/tcp_posix.cc +78 -73
  259. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  260. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  261. data/src/core/lib/iomgr/tcp_server.h +12 -11
  262. data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
  263. data/src/core/lib/iomgr/tcp_server_posix.cc +28 -21
  264. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  265. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
  266. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  267. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  268. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  269. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  270. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  271. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  272. data/src/core/lib/iomgr/timer.h +6 -1
  273. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  274. data/src/core/lib/iomgr/timer_custom.h +1 -1
  275. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  276. data/src/core/lib/iomgr/udp_server.cc +21 -20
  277. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  278. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  279. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  280. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  281. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  282. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  283. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  284. data/src/core/lib/iomgr/work_serializer.h +17 -1
  285. data/src/core/lib/json/json.h +1 -1
  286. data/src/core/lib/json/json_reader.cc +4 -4
  287. data/src/core/lib/matchers/matchers.cc +39 -39
  288. data/src/core/lib/matchers/matchers.h +28 -28
  289. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  290. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  291. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  292. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  293. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  294. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  295. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  296. data/src/core/lib/security/credentials/credentials.h +2 -2
  297. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  298. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  307. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  308. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  309. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
  310. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  311. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  312. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  313. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  314. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  315. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  316. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  317. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  318. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  319. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  320. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  321. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  322. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  323. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  324. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  325. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  326. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  327. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  328. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  329. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  330. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  331. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  332. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
  333. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  334. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  335. data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
  336. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  337. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  338. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  339. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  340. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  341. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  342. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  343. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  344. data/src/core/lib/security/transport/tsi_error.h +2 -1
  345. data/src/core/lib/security/util/json_util.cc +2 -2
  346. data/src/core/lib/security/util/json_util.h +1 -1
  347. data/src/core/lib/surface/call.cc +67 -46
  348. data/src/core/lib/surface/call.h +13 -2
  349. data/src/core/lib/surface/channel.cc +6 -6
  350. data/src/core/lib/surface/channel.h +3 -2
  351. data/src/core/lib/surface/channel_ping.cc +1 -1
  352. data/src/core/lib/surface/completion_queue.cc +68 -69
  353. data/src/core/lib/surface/completion_queue.h +3 -2
  354. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  355. data/src/core/lib/surface/init.cc +1 -3
  356. data/src/core/lib/surface/init.h +10 -1
  357. data/src/core/lib/surface/lame_client.cc +11 -11
  358. data/src/core/lib/surface/lame_client.h +1 -1
  359. data/src/core/lib/surface/server.cc +28 -22
  360. data/src/core/lib/surface/server.h +16 -15
  361. data/src/core/lib/surface/validate_metadata.cc +7 -7
  362. data/src/core/lib/surface/validate_metadata.h +3 -2
  363. data/src/core/lib/surface/version.cc +4 -2
  364. data/src/core/lib/transport/byte_stream.cc +5 -5
  365. data/src/core/lib/transport/byte_stream.h +8 -8
  366. data/src/core/lib/transport/connectivity_state.cc +1 -1
  367. data/src/core/lib/transport/error_utils.cc +21 -10
  368. data/src/core/lib/transport/error_utils.h +11 -5
  369. data/src/core/lib/transport/metadata_batch.cc +37 -37
  370. data/src/core/lib/transport/metadata_batch.h +19 -18
  371. data/src/core/lib/transport/transport.cc +4 -3
  372. data/src/core/lib/transport/transport.h +6 -4
  373. data/src/core/lib/transport/transport_op_string.cc +6 -6
  374. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  375. data/src/core/tsi/alts/crypt/gsec.h +6 -0
  376. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  377. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  378. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  379. data/src/core/tsi/ssl_transport_security.cc +32 -14
  380. data/src/core/tsi/ssl_transport_security.h +3 -4
  381. data/src/ruby/bin/math_services_pb.rb +1 -1
  382. data/src/ruby/ext/grpc/extconf.rb +2 -0
  383. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
  384. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
  385. data/src/ruby/lib/grpc/version.rb +1 -1
  386. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  387. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  388. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  389. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  390. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  391. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  392. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  393. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  394. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  395. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  396. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  397. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  398. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  399. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  400. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  401. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  402. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  403. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  404. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  405. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  406. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  407. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  408. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  409. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  410. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  411. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  412. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  413. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  414. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  415. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  416. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  417. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  418. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  419. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  420. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  421. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  422. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  423. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  424. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  425. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  426. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  427. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  428. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  429. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  430. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  431. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  432. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  433. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  434. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  435. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  436. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  437. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  438. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  439. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  440. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  441. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  442. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  443. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  444. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  445. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  446. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  447. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  448. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  449. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  450. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  451. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  452. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  453. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  455. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  456. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  457. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  458. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  459. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  460. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  461. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  462. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  463. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  464. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  465. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  466. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  467. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  468. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  469. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  470. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  471. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  472. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  473. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  474. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  475. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  476. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  477. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  478. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  479. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  480. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  481. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  482. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  483. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  484. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  485. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  486. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  487. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  488. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  489. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  490. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  491. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  492. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  493. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  494. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  495. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  496. data/third_party/boringssl-with-bazel/err_data.c +483 -461
  497. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  498. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
  499. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  500. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  501. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  503. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  505. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  506. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  507. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  508. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  509. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  510. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  511. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  512. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  513. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  514. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  515. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  516. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  517. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
  518. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  519. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  520. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  521. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  522. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  523. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  524. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  525. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
  526. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
  527. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  528. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  529. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  530. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  531. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  532. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  533. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
  534. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
  535. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  536. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
  537. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
  538. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  539. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  540. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
  541. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
  542. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
  543. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
  544. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  545. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  546. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  547. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
  548. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  549. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
  550. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  551. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  552. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  553. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
  554. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  555. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  556. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  557. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  558. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  559. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  560. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  561. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
  562. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  563. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
  564. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  565. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  566. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
  567. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  568. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  569. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  570. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  571. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  572. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  573. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  576. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  577. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
  579. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  580. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
  581. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  582. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
  583. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
  584. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  585. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  586. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  587. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
  588. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  589. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  591. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
  592. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  593. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  594. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  595. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
  596. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  597. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  598. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  599. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
  600. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
  601. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
  602. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  603. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
  604. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
  605. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  606. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
  607. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  608. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
  609. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
  610. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
  611. data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
  612. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  613. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  614. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  615. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  616. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  617. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
  618. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
  623. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
  624. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
  625. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
  626. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
  627. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
  628. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  629. metadata +94 -46
  630. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  631. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  632. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  633. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  634. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  635. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
  636. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -55,8 +55,8 @@ typedef struct grpc_call_create_args {
55
55
  /* Create a new call based on \a args.
56
56
  Regardless of success or failure, always returns a valid new call into *call
57
57
  */
58
- grpc_error* grpc_call_create(const grpc_call_create_args* args,
59
- grpc_call** call);
58
+ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
59
+ grpc_call** call);
60
60
 
61
61
  void grpc_call_set_completion_queue(grpc_call* call, grpc_completion_queue* cq);
62
62
 
@@ -120,6 +120,17 @@ size_t grpc_call_get_initial_size_estimate();
120
120
  grpc_compression_algorithm grpc_call_compression_for_level(
121
121
  grpc_call* call, grpc_compression_level level);
122
122
 
123
+ /* Did this client call receive a trailers-only response */
124
+ /* TODO(markdroth): This is currently available only to the C++ API.
125
+ Move to surface API if requested by other languages. */
126
+ bool grpc_call_is_trailers_only(const grpc_call* call);
127
+
128
+ /* Returns whether or not the call's receive message operation failed because of
129
+ * an error (as opposed to a graceful end-of-stream) */
130
+ /* TODO(markdroth): This is currently available only to the C++ API.
131
+ Move to surface API if requested by other languages. */
132
+ bool grpc_call_failed_before_recv_message(const grpc_call* c);
133
+
123
134
  extern grpc_core::TraceFlag grpc_call_error_trace;
124
135
  extern grpc_core::TraceFlag grpc_compression_trace;
125
136
 
@@ -54,11 +54,11 @@
54
54
  * (OK, Cancelled, Unknown). */
55
55
  #define NUM_CACHED_STATUS_ELEMS 3
56
56
 
57
- static void destroy_channel(void* arg, grpc_error* error);
57
+ static void destroy_channel(void* arg, grpc_error_handle error);
58
58
 
59
59
  grpc_channel* grpc_channel_create_with_builder(
60
60
  grpc_channel_stack_builder* builder,
61
- grpc_channel_stack_type channel_stack_type, grpc_error** error) {
61
+ grpc_channel_stack_type channel_stack_type, grpc_error_handle* error) {
62
62
  char* target = gpr_strdup(grpc_channel_stack_builder_get_target(builder));
63
63
  grpc_channel_args* args = grpc_channel_args_copy(
64
64
  grpc_channel_stack_builder_get_channel_arguments(builder));
@@ -70,12 +70,12 @@ grpc_channel* grpc_channel_create_with_builder(
70
70
  } else {
71
71
  GRPC_STATS_INC_CLIENT_CHANNELS_CREATED();
72
72
  }
73
- grpc_error* builder_error = grpc_channel_stack_builder_finish(
73
+ grpc_error_handle builder_error = grpc_channel_stack_builder_finish(
74
74
  builder, sizeof(grpc_channel), 1, destroy_channel, nullptr,
75
75
  reinterpret_cast<void**>(&channel));
76
76
  if (builder_error != GRPC_ERROR_NONE) {
77
77
  gpr_log(GPR_ERROR, "channel stack builder failed: %s",
78
- grpc_error_string(builder_error));
78
+ grpc_error_std_string(builder_error).c_str());
79
79
  GPR_ASSERT(channel == nullptr);
80
80
  if (error != nullptr) {
81
81
  *error = builder_error;
@@ -225,7 +225,7 @@ grpc_channel* grpc_channel_create(const char* target,
225
225
  grpc_channel_stack_type channel_stack_type,
226
226
  grpc_transport* optional_transport,
227
227
  grpc_resource_user* resource_user,
228
- grpc_error** error) {
228
+ grpc_error_handle* error) {
229
229
  // We need to make sure that grpc_shutdown() does not shut things down
230
230
  // until after the channel is destroyed. However, the channel may not
231
231
  // actually be destroyed by the time grpc_channel_destroy() returns,
@@ -497,7 +497,7 @@ grpc_call* grpc_channel_create_registered_call(
497
497
  return call;
498
498
  }
499
499
 
500
- static void destroy_channel(void* arg, grpc_error* /*error*/) {
500
+ static void destroy_channel(void* arg, grpc_error_handle /*error*/) {
501
501
  grpc_channel* channel = static_cast<grpc_channel*>(arg);
502
502
  if (channel->channelz_node != nullptr) {
503
503
  channel->channelz_node->AddTraceEvent(
@@ -35,7 +35,7 @@ grpc_channel* grpc_channel_create(const char* target,
35
35
  grpc_channel_stack_type channel_stack_type,
36
36
  grpc_transport* optional_transport,
37
37
  grpc_resource_user* resource_user = nullptr,
38
- grpc_error** error = nullptr);
38
+ grpc_error_handle* error = nullptr);
39
39
 
40
40
  /** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
41
41
  * is safe to use from within core. */
@@ -43,7 +43,8 @@ void grpc_channel_destroy_internal(grpc_channel* channel);
43
43
 
44
44
  grpc_channel* grpc_channel_create_with_builder(
45
45
  grpc_channel_stack_builder* builder,
46
- grpc_channel_stack_type channel_stack_type, grpc_error** error = nullptr);
46
+ grpc_channel_stack_type channel_stack_type,
47
+ grpc_error_handle* error = nullptr);
47
48
 
48
49
  /** Create a call given a grpc_channel, in order to call \a method.
49
50
  Progress is tied to activity on \a pollset_set. The returned call object is
@@ -38,7 +38,7 @@ static void ping_destroy(void* arg, grpc_cq_completion* /*storage*/) {
38
38
  gpr_free(arg);
39
39
  }
40
40
 
41
- static void ping_done(void* arg, grpc_error* error) {
41
+ static void ping_done(void* arg, grpc_error_handle error) {
42
42
  ping_result* pr = static_cast<ping_result*>(arg);
43
43
  grpc_cq_end_op(pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy, pr,
44
44
  &pr->completion_storage);
@@ -70,10 +70,10 @@ struct cq_poller_vtable {
70
70
  bool can_listen;
71
71
  size_t (*size)(void);
72
72
  void (*init)(grpc_pollset* pollset, gpr_mu** mu);
73
- grpc_error* (*kick)(grpc_pollset* pollset,
74
- grpc_pollset_worker* specific_worker);
75
- grpc_error* (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker,
76
- grpc_millis deadline);
73
+ grpc_error_handle (*kick)(grpc_pollset* pollset,
74
+ grpc_pollset_worker* specific_worker);
75
+ grpc_error_handle (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker,
76
+ grpc_millis deadline);
77
77
  void (*shutdown)(grpc_pollset* pollset, grpc_closure* closure);
78
78
  void (*destroy)(grpc_pollset* pollset);
79
79
  };
@@ -103,9 +103,9 @@ void non_polling_poller_destroy(grpc_pollset* pollset) {
103
103
  gpr_mu_destroy(&npp->mu);
104
104
  }
105
105
 
106
- grpc_error* non_polling_poller_work(grpc_pollset* pollset,
107
- grpc_pollset_worker** worker,
108
- grpc_millis deadline) {
106
+ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
107
+ grpc_pollset_worker** worker,
108
+ grpc_millis deadline) {
109
109
  non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
110
110
  if (npp->shutdown) return GRPC_ERROR_NONE;
111
111
  if (npp->kicked_without_poller) {
@@ -145,8 +145,8 @@ grpc_error* non_polling_poller_work(grpc_pollset* pollset,
145
145
  return GRPC_ERROR_NONE;
146
146
  }
147
147
 
148
- grpc_error* non_polling_poller_kick(grpc_pollset* pollset,
149
- grpc_pollset_worker* specific_worker) {
148
+ grpc_error_handle non_polling_poller_kick(
149
+ grpc_pollset* pollset, grpc_pollset_worker* specific_worker) {
150
150
  non_polling_poller* p = reinterpret_cast<non_polling_poller*>(pollset);
151
151
  if (specific_worker == nullptr) {
152
152
  specific_worker = reinterpret_cast<grpc_pollset_worker*>(p->root);
@@ -197,12 +197,11 @@ const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
197
197
  struct cq_vtable {
198
198
  grpc_cq_completion_type cq_completion_type;
199
199
  size_t data_size;
200
- void (*init)(void* data,
201
- grpc_experimental_completion_queue_functor* shutdown_callback);
200
+ void (*init)(void* data, grpc_completion_queue_functor* shutdown_callback);
202
201
  void (*shutdown)(grpc_completion_queue* cq);
203
202
  void (*destroy)(void* data);
204
203
  bool (*begin_op)(grpc_completion_queue* cq, void* tag);
205
- void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error* error,
204
+ void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error_handle error,
206
205
  void (*done)(void* done_arg, grpc_cq_completion* storage),
207
206
  void* done_arg, grpc_cq_completion* storage, bool internal);
208
207
  grpc_event (*next)(grpc_completion_queue* cq, gpr_timespec deadline,
@@ -310,8 +309,7 @@ struct cq_pluck_data {
310
309
  };
311
310
 
312
311
  struct cq_callback_data {
313
- explicit cq_callback_data(
314
- grpc_experimental_completion_queue_functor* shutdown_callback)
312
+ explicit cq_callback_data(grpc_completion_queue_functor* shutdown_callback)
315
313
  : shutdown_callback(shutdown_callback) {}
316
314
 
317
315
  ~cq_callback_data() {
@@ -332,7 +330,7 @@ struct cq_callback_data {
332
330
  bool shutdown_called = false;
333
331
 
334
332
  /** A callback that gets invoked when the CQ completes shutdown */
335
- grpc_experimental_completion_queue_functor* shutdown_callback;
333
+ grpc_completion_queue_functor* shutdown_callback;
336
334
  };
337
335
 
338
336
  } // namespace
@@ -376,17 +374,17 @@ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag);
376
374
  // safe to free up that storage. The storage MUST NOT be freed until the
377
375
  // done callback is invoked.
378
376
  static void cq_end_op_for_next(
379
- grpc_completion_queue* cq, void* tag, grpc_error* error,
377
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
380
378
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
381
379
  grpc_cq_completion* storage, bool internal);
382
380
 
383
381
  static void cq_end_op_for_pluck(
384
- grpc_completion_queue* cq, void* tag, grpc_error* error,
382
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
385
383
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
386
384
  grpc_cq_completion* storage, bool internal);
387
385
 
388
386
  static void cq_end_op_for_callback(
389
- grpc_completion_queue* cq, void* tag, grpc_error* error,
387
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
390
388
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
391
389
  grpc_cq_completion* storage, bool internal);
392
390
 
@@ -397,12 +395,12 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
397
395
  gpr_timespec deadline, void* reserved);
398
396
 
399
397
  // Note that cq_init_next and cq_init_pluck do not use the shutdown_callback
400
- static void cq_init_next(
401
- void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
402
- static void cq_init_pluck(
403
- void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
404
- static void cq_init_callback(
405
- void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
398
+ static void cq_init_next(void* data,
399
+ grpc_completion_queue_functor* shutdown_callback);
400
+ static void cq_init_pluck(void* data,
401
+ grpc_completion_queue_functor* shutdown_callback);
402
+ static void cq_init_callback(void* data,
403
+ grpc_completion_queue_functor* shutdown_callback);
406
404
  static void cq_destroy_next(void* data);
407
405
  static void cq_destroy_pluck(void* data);
408
406
  static void cq_destroy_callback(void* data);
@@ -439,7 +437,7 @@ grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
439
437
  } \
440
438
  } while (0)
441
439
 
442
- static void on_pollset_shutdown_done(void* arg, grpc_error* error);
440
+ static void on_pollset_shutdown_done(void* arg, grpc_error_handle error);
443
441
 
444
442
  void grpc_cq_global_init() {
445
443
  gpr_tls_init(&g_cached_event);
@@ -513,7 +511,7 @@ grpc_cq_completion* CqEventQueue::Pop() {
513
511
 
514
512
  grpc_completion_queue* grpc_completion_queue_create_internal(
515
513
  grpc_cq_completion_type completion_type, grpc_cq_polling_type polling_type,
516
- grpc_experimental_completion_queue_functor* shutdown_callback) {
514
+ grpc_completion_queue_functor* shutdown_callback) {
517
515
  GPR_TIMER_SCOPE("grpc_completion_queue_create_internal", 0);
518
516
 
519
517
  grpc_completion_queue* cq;
@@ -548,9 +546,8 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
548
546
  return cq;
549
547
  }
550
548
 
551
- static void cq_init_next(
552
- void* data,
553
- grpc_experimental_completion_queue_functor* /*shutdown_callback*/) {
549
+ static void cq_init_next(void* data,
550
+ grpc_completion_queue_functor* /*shutdown_callback*/) {
554
551
  new (data) cq_next_data();
555
552
  }
556
553
 
@@ -560,8 +557,7 @@ static void cq_destroy_next(void* data) {
560
557
  }
561
558
 
562
559
  static void cq_init_pluck(
563
- void* data,
564
- grpc_experimental_completion_queue_functor* /*shutdown_callback*/) {
560
+ void* data, grpc_completion_queue_functor* /*shutdown_callback*/) {
565
561
  new (data) cq_pluck_data();
566
562
  }
567
563
 
@@ -570,8 +566,8 @@ static void cq_destroy_pluck(void* data) {
570
566
  cqd->~cq_pluck_data();
571
567
  }
572
568
 
573
- static void cq_init_callback(
574
- void* data, grpc_experimental_completion_queue_functor* shutdown_callback) {
569
+ static void cq_init_callback(void* data,
570
+ grpc_completion_queue_functor* shutdown_callback) {
575
571
  new (data) cq_callback_data(shutdown_callback);
576
572
  }
577
573
 
@@ -604,7 +600,7 @@ void grpc_cq_internal_ref(grpc_completion_queue* cq) {
604
600
  cq->owning_refs.Ref(debug_location, reason);
605
601
  }
606
602
 
607
- static void on_pollset_shutdown_done(void* arg, grpc_error* /*error*/) {
603
+ static void on_pollset_shutdown_done(void* arg, grpc_error_handle /*error*/) {
608
604
  grpc_completion_queue* cq = static_cast<grpc_completion_queue*>(arg);
609
605
  GRPC_CQ_INTERNAL_UNREF(cq, "pollset_destroy");
610
606
  }
@@ -690,7 +686,7 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
690
686
  * completion
691
687
  * type of GRPC_CQ_NEXT) */
692
688
  static void cq_end_op_for_next(
693
- grpc_completion_queue* cq, void* tag, grpc_error* error,
689
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
694
690
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
695
691
  grpc_cq_completion* storage, bool /*internal*/) {
696
692
  GPR_TIMER_SCOPE("cq_end_op_for_next", 0);
@@ -698,14 +694,15 @@ static void cq_end_op_for_next(
698
694
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
699
695
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
700
696
  error != GRPC_ERROR_NONE)) {
701
- const char* errmsg = grpc_error_string(error);
697
+ std::string errmsg = grpc_error_std_string(error);
702
698
  GRPC_API_TRACE(
703
699
  "cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
704
700
  "done=%p, done_arg=%p, storage=%p)",
705
- 6, (cq, tag, errmsg, done, done_arg, storage));
701
+ 6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
706
702
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
707
703
  error != GRPC_ERROR_NONE) {
708
- gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag, errmsg);
704
+ gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
705
+ errmsg.c_str());
709
706
  }
710
707
  }
711
708
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
@@ -736,13 +733,13 @@ static void cq_end_op_for_next(
736
733
  /* Only kick if this is the first item queued */
737
734
  if (is_first) {
738
735
  gpr_mu_lock(cq->mu);
739
- grpc_error* kick_error =
736
+ grpc_error_handle kick_error =
740
737
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
741
738
  gpr_mu_unlock(cq->mu);
742
739
 
743
740
  if (kick_error != GRPC_ERROR_NONE) {
744
- const char* msg = grpc_error_string(kick_error);
745
- gpr_log(GPR_ERROR, "Kick failed: %s", msg);
741
+ gpr_log(GPR_ERROR, "Kick failed: %s",
742
+ grpc_error_std_string(kick_error).c_str());
746
743
  GRPC_ERROR_UNREF(kick_error);
747
744
  }
748
745
  }
@@ -771,7 +768,7 @@ static void cq_end_op_for_next(
771
768
  * completion
772
769
  * type of GRPC_CQ_PLUCK) */
773
770
  static void cq_end_op_for_pluck(
774
- grpc_completion_queue* cq, void* tag, grpc_error* error,
771
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
775
772
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
776
773
  grpc_cq_completion* storage, bool /*internal*/) {
777
774
  GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0);
@@ -782,14 +779,15 @@ static void cq_end_op_for_pluck(
782
779
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
783
780
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
784
781
  error != GRPC_ERROR_NONE)) {
785
- const char* errmsg = grpc_error_string(error);
782
+ std::string errmsg = grpc_error_std_string(error).c_str();
786
783
  GRPC_API_TRACE(
787
784
  "cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
788
785
  "done=%p, done_arg=%p, storage=%p)",
789
- 6, (cq, tag, errmsg, done, done_arg, storage));
786
+ 6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
790
787
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
791
788
  error != GRPC_ERROR_NONE) {
792
- gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
789
+ gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
790
+ errmsg.c_str());
793
791
  }
794
792
  }
795
793
 
@@ -820,15 +818,12 @@ static void cq_end_op_for_pluck(
820
818
  }
821
819
  }
822
820
 
823
- grpc_error* kick_error =
821
+ grpc_error_handle kick_error =
824
822
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
825
-
826
823
  gpr_mu_unlock(cq->mu);
827
-
828
824
  if (kick_error != GRPC_ERROR_NONE) {
829
- const char* msg = grpc_error_string(kick_error);
830
- gpr_log(GPR_ERROR, "Kick failed: %s", msg);
831
-
825
+ gpr_log(GPR_ERROR, "Kick failed: %s",
826
+ grpc_error_std_string(kick_error).c_str());
832
827
  GRPC_ERROR_UNREF(kick_error);
833
828
  }
834
829
  }
@@ -836,14 +831,14 @@ static void cq_end_op_for_pluck(
836
831
  GRPC_ERROR_UNREF(error);
837
832
  }
838
833
 
839
- static void functor_callback(void* arg, grpc_error* error) {
840
- auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(arg);
834
+ static void functor_callback(void* arg, grpc_error_handle error) {
835
+ auto* functor = static_cast<grpc_completion_queue_functor*>(arg);
841
836
  functor->functor_run(functor, error == GRPC_ERROR_NONE);
842
837
  }
843
838
 
844
839
  /* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
845
840
  static void cq_end_op_for_callback(
846
- grpc_completion_queue* cq, void* tag, grpc_error* error,
841
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
847
842
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
848
843
  grpc_cq_completion* storage, bool internal) {
849
844
  GPR_TIMER_SCOPE("cq_end_op_for_callback", 0);
@@ -853,14 +848,15 @@ static void cq_end_op_for_callback(
853
848
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
854
849
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
855
850
  error != GRPC_ERROR_NONE)) {
856
- const char* errmsg = grpc_error_string(error);
851
+ std::string errmsg = grpc_error_std_string(error);
857
852
  GRPC_API_TRACE(
858
853
  "cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
859
854
  "done=%p, done_arg=%p, storage=%p)",
860
- 6, (cq, tag, errmsg, done, done_arg, storage));
855
+ 6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
861
856
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
862
857
  error != GRPC_ERROR_NONE) {
863
- gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
858
+ gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
859
+ errmsg.c_str());
864
860
  }
865
861
  }
866
862
 
@@ -880,7 +876,7 @@ static void cq_end_op_for_callback(
880
876
  // 2. The callback is marked inlineable and there is an ACEC available
881
877
  // 3. We are already running in a background poller thread (which always has
882
878
  // an ACEC available at the base of the stack).
883
- auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(tag);
879
+ auto* functor = static_cast<grpc_completion_queue_functor*>(tag);
884
880
  if (((internal || functor->inlineable) &&
885
881
  grpc_core::ApplicationCallbackExecCtx::Available()) ||
886
882
  grpc_iomgr_is_any_background_poller_thread()) {
@@ -896,7 +892,8 @@ static void cq_end_op_for_callback(
896
892
  GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error);
897
893
  }
898
894
 
899
- void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
895
+ void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
896
+ grpc_error_handle error,
900
897
  void (*done)(void* done_arg, grpc_cq_completion* storage),
901
898
  void* done_arg, grpc_cq_completion* storage,
902
899
  bool internal) {
@@ -1056,16 +1053,19 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
1056
1053
  /* The main polling work happens in grpc_pollset_work */
1057
1054
  gpr_mu_lock(cq->mu);
1058
1055
  cq->num_polls++;
1059
- grpc_error* err = cq->poller_vtable->work(POLLSET_FROM_CQ(cq), nullptr,
1060
- iteration_deadline);
1056
+ grpc_error_handle err = cq->poller_vtable->work(
1057
+ POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
1061
1058
  gpr_mu_unlock(cq->mu);
1062
1059
 
1063
1060
  if (err != GRPC_ERROR_NONE) {
1064
- const char* msg = grpc_error_string(err);
1065
- gpr_log(GPR_ERROR, "Completion queue next failed: %s", msg);
1066
-
1061
+ gpr_log(GPR_ERROR, "Completion queue next failed: %s",
1062
+ grpc_error_std_string(err).c_str());
1067
1063
  GRPC_ERROR_UNREF(err);
1068
- ret.type = GRPC_QUEUE_TIMEOUT;
1064
+ if (err == GRPC_ERROR_CANCELLED) {
1065
+ ret.type = GRPC_QUEUE_SHUTDOWN;
1066
+ } else {
1067
+ ret.type = GRPC_QUEUE_TIMEOUT;
1068
+ }
1069
1069
  ret.success = 0;
1070
1070
  dump_pending_tags(cq);
1071
1071
  break;
@@ -1299,14 +1299,13 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1299
1299
  break;
1300
1300
  }
1301
1301
  cq->num_polls++;
1302
- grpc_error* err =
1302
+ grpc_error_handle err =
1303
1303
  cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
1304
1304
  if (err != GRPC_ERROR_NONE) {
1305
1305
  del_plucker(cq, tag, &worker);
1306
1306
  gpr_mu_unlock(cq->mu);
1307
- const char* msg = grpc_error_string(err);
1308
- gpr_log(GPR_ERROR, "Completion queue pluck failed: %s", msg);
1309
-
1307
+ gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
1308
+ grpc_error_std_string(err).c_str());
1310
1309
  GRPC_ERROR_UNREF(err);
1311
1310
  ret.type = GRPC_QUEUE_TIMEOUT;
1312
1311
  ret.success = 0;