grpc 1.37.1 → 1.38.0.pre1

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 (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  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 +2 -2
  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 +5 -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 +628 -3101
  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_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  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/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -21,9 +21,9 @@
21
21
  #include "src/core/lib/iomgr/port.h"
22
22
 
23
23
  #ifdef GRPC_WINSOCK_SOCKET
24
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
24
25
  #include "src/core/lib/iomgr/endpoint_pair.h"
25
26
  #include "src/core/lib/iomgr/sockaddr.h"
26
- #include "src/core/lib/iomgr/sockaddr_utils.h"
27
27
 
28
28
  #include <errno.h>
29
29
  #include <fcntl.h>
@@ -41,6 +41,114 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount(false,
41
41
  "error_refcount");
42
42
  grpc_core::DebugOnlyTraceFlag grpc_trace_closure(false, "closure");
43
43
 
44
+ static gpr_atm g_error_creation_allowed = true;
45
+
46
+ void grpc_disable_error_creation() {
47
+ gpr_atm_no_barrier_store(&g_error_creation_allowed, false);
48
+ }
49
+
50
+ void grpc_enable_error_creation() {
51
+ gpr_atm_no_barrier_store(&g_error_creation_allowed, true);
52
+ }
53
+
54
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
55
+
56
+ absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
57
+ const grpc_core::DebugLocation& location,
58
+ size_t children_count, absl::Status* children) {
59
+ absl::Status s = StatusCreate(code, msg, location, {});
60
+ for (size_t i = 0; i < children_count; ++i) {
61
+ if (!children[i].ok()) {
62
+ StatusAddChild(&s, children[i]);
63
+ }
64
+ }
65
+ return s;
66
+ }
67
+
68
+ std::string grpc_error_std_string(const absl::Status& error) {
69
+ return grpc_core::StatusToString(error);
70
+ }
71
+
72
+ absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
73
+ const char* call_name) {
74
+ absl::Status s =
75
+ StatusCreate(absl::StatusCode::kUnknown, "OS Error", location, {});
76
+ grpc_core::StatusSetInt(&s, grpc_core::StatusIntProperty::ERRNO, err);
77
+ grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::OS_ERROR,
78
+ strerror(err));
79
+ grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::SYSCALL, call_name);
80
+ return s;
81
+ }
82
+
83
+ #ifdef GPR_WINDOWS
84
+ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
85
+ const char* call_name) {
86
+ char* utf8_message = gpr_format_message(err);
87
+ absl::Status s =
88
+ StatusCreate(absl::StatusCode::kUnknown, "WSA Error", location, {});
89
+ StatusSetInt(&s, StatusIntProperty::WSA_ERROR, err);
90
+ StatusSetStr(&s, StatusStrProperty::OS_ERROR, utf8_message);
91
+ StatusSetStr(&s, StatusStrProperty::SYSCALL, call_name);
92
+ }
93
+ #endif
94
+
95
+ grpc_error_handle grpc_error_set_int(grpc_error_handle src,
96
+ grpc_error_ints which, intptr_t value) {
97
+ grpc_core::StatusSetInt(
98
+ &src, static_cast<grpc_core::StatusIntProperty>(which), value);
99
+ return src;
100
+ }
101
+
102
+ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
103
+ intptr_t* p) {
104
+ absl::optional<intptr_t> value = grpc_core::StatusGetInt(
105
+ error, static_cast<grpc_core::StatusIntProperty>(which));
106
+ if (value.has_value()) {
107
+ *p = *value;
108
+ return true;
109
+ } else {
110
+ return false;
111
+ }
112
+ }
113
+
114
+ grpc_error_handle grpc_error_set_str(grpc_error_handle src,
115
+ grpc_error_strs which,
116
+ const grpc_slice& str) {
117
+ grpc_core::StatusSetStr(
118
+ &src, static_cast<grpc_core::StatusStrProperty>(which),
119
+ std::string(reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(str)),
120
+ GRPC_SLICE_LENGTH(str)));
121
+ return src;
122
+ }
123
+
124
+ bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which,
125
+ grpc_slice* s) {
126
+ absl::optional<std::string> value = grpc_core::StatusGetStr(
127
+ error, static_cast<grpc_core::StatusStrProperty>(which));
128
+ if (value.has_value()) {
129
+ *s = grpc_slice_from_copied_buffer(value->c_str(), value->size());
130
+ return true;
131
+ } else {
132
+ return false;
133
+ }
134
+ }
135
+
136
+ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
137
+ grpc_error_handle child) {
138
+ grpc_core::StatusAddChild(&src, child);
139
+ return src;
140
+ }
141
+
142
+ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
143
+ int line) {
144
+ GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
145
+ gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what,
146
+ grpc_core::StatusToString(error).c_str());
147
+ return false;
148
+ }
149
+
150
+ #else // GRPC_ERROR_IS_ABSEIL_STATUS
151
+
44
152
  static const char* error_int_name(grpc_error_ints key) {
45
153
  switch (key) {
46
154
  case GRPC_ERROR_INT_ERRNO:
@@ -61,20 +169,18 @@ static const char* error_int_name(grpc_error_ints key) {
61
169
  return "http2_error";
62
170
  case GRPC_ERROR_INT_TSI_CODE:
63
171
  return "tsi_code";
64
- case GRPC_ERROR_INT_SECURITY_STATUS:
65
- return "security_status";
66
172
  case GRPC_ERROR_INT_FD:
67
173
  return "fd";
68
174
  case GRPC_ERROR_INT_WSA_ERROR:
69
175
  return "wsa_error";
70
176
  case GRPC_ERROR_INT_HTTP_STATUS:
71
177
  return "http_status";
72
- case GRPC_ERROR_INT_LIMIT:
73
- return "limit";
74
178
  case GRPC_ERROR_INT_OCCURRED_DURING_WRITE:
75
179
  return "occurred_during_write";
76
180
  case GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE:
77
181
  return "channel_connectivity_state";
182
+ case GRPC_ERROR_INT_LB_POLICY_DROP:
183
+ return "lb_policy_drop";
78
184
  case GRPC_ERROR_INT_MAX:
79
185
  GPR_UNREACHABLE_CODE(return "unknown");
80
186
  }
@@ -105,8 +211,6 @@ static const char* error_str_name(grpc_error_strs key) {
105
211
  return "tsi_error";
106
212
  case GRPC_ERROR_STR_FILENAME:
107
213
  return "filename";
108
- case GRPC_ERROR_STR_QUEUED_BUFFERS:
109
- return "queued_buffers";
110
214
  case GRPC_ERROR_STR_MAX:
111
215
  GPR_UNREACHABLE_CODE(return "unknown");
112
216
  }
@@ -124,7 +228,8 @@ static const char* error_time_name(grpc_error_times key) {
124
228
  }
125
229
 
126
230
  #ifndef NDEBUG
127
- grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line) {
231
+ grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file,
232
+ int line) {
128
233
  if (grpc_trace_error_refcount.enabled()) {
129
234
  gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err,
130
235
  gpr_atm_no_barrier_load(&err->atomics.refs.count),
@@ -134,13 +239,13 @@ grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line) {
134
239
  return err;
135
240
  }
136
241
  #else
137
- grpc_error* grpc_error_do_ref(grpc_error* err) {
242
+ grpc_error_handle grpc_error_do_ref(grpc_error_handle err) {
138
243
  gpr_ref(&err->atomics.refs);
139
244
  return err;
140
245
  }
141
246
  #endif
142
247
 
143
- static void unref_errs(grpc_error* err) {
248
+ static void unref_errs(grpc_error_handle err) {
144
249
  uint8_t slot = err->first_err;
145
250
  while (slot != UINT8_MAX) {
146
251
  grpc_linked_error* lerr =
@@ -152,7 +257,7 @@ static void unref_errs(grpc_error* err) {
152
257
  }
153
258
  }
154
259
 
155
- static void unref_strs(grpc_error* err) {
260
+ static void unref_strs(grpc_error_handle err) {
156
261
  for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
157
262
  uint8_t slot = err->strs[which];
158
263
  if (slot != UINT8_MAX) {
@@ -162,7 +267,7 @@ static void unref_strs(grpc_error* err) {
162
267
  }
163
268
  }
164
269
 
165
- static void error_destroy(grpc_error* err) {
270
+ static void error_destroy(grpc_error_handle err) {
166
271
  GPR_ASSERT(!grpc_error_is_special(err));
167
272
  unref_errs(err);
168
273
  unref_strs(err);
@@ -172,7 +277,7 @@ static void error_destroy(grpc_error* err) {
172
277
  }
173
278
 
174
279
  #ifndef NDEBUG
175
- void grpc_error_do_unref(grpc_error* err, const char* file, int line) {
280
+ void grpc_error_do_unref(grpc_error_handle err, const char* file, int line) {
176
281
  if (grpc_trace_error_refcount.enabled()) {
177
282
  gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err,
178
283
  gpr_atm_no_barrier_load(&err->atomics.refs.count),
@@ -183,14 +288,14 @@ void grpc_error_do_unref(grpc_error* err, const char* file, int line) {
183
288
  }
184
289
  }
185
290
  #else
186
- void grpc_error_do_unref(grpc_error* err) {
291
+ void grpc_error_do_unref(grpc_error_handle err) {
187
292
  if (gpr_unref(&err->atomics.refs)) {
188
293
  error_destroy(err);
189
294
  }
190
295
  }
191
296
  #endif
192
297
 
193
- static uint8_t get_placement(grpc_error** err, size_t size) {
298
+ static uint8_t get_placement(grpc_error_handle* err, size_t size) {
194
299
  GPR_ASSERT(*err);
195
300
  uint8_t slots = static_cast<uint8_t>(size / sizeof(intptr_t));
196
301
  if ((*err)->arena_size + slots > (*err)->arena_capacity) {
@@ -200,9 +305,9 @@ static uint8_t get_placement(grpc_error** err, size_t size) {
200
305
  return UINT8_MAX;
201
306
  }
202
307
  #ifndef NDEBUG
203
- grpc_error* orig = *err;
308
+ grpc_error_handle orig = *err;
204
309
  #endif
205
- *err = static_cast<grpc_error*>(gpr_realloc(
310
+ *err = static_cast<grpc_error_handle>(gpr_realloc(
206
311
  *err, sizeof(grpc_error) + (*err)->arena_capacity * sizeof(intptr_t)));
207
312
  #ifndef NDEBUG
208
313
  if (grpc_trace_error_refcount.enabled()) {
@@ -217,7 +322,7 @@ static uint8_t get_placement(grpc_error** err, size_t size) {
217
322
  return placement;
218
323
  }
219
324
 
220
- static void internal_set_int(grpc_error** err, grpc_error_ints which,
325
+ static void internal_set_int(grpc_error_handle* err, grpc_error_ints which,
221
326
  intptr_t value) {
222
327
  uint8_t slot = (*err)->ints[which];
223
328
  if (slot == UINT8_MAX) {
@@ -232,7 +337,7 @@ static void internal_set_int(grpc_error** err, grpc_error_ints which,
232
337
  (*err)->arena[slot] = value;
233
338
  }
234
339
 
235
- static void internal_set_str(grpc_error** err, grpc_error_strs which,
340
+ static void internal_set_str(grpc_error_handle* err, grpc_error_strs which,
236
341
  const grpc_slice& value) {
237
342
  uint8_t slot = (*err)->strs[which];
238
343
  if (slot == UINT8_MAX) {
@@ -253,7 +358,7 @@ static void internal_set_str(grpc_error** err, grpc_error_strs which,
253
358
  }
254
359
 
255
360
  static char* fmt_time(gpr_timespec tm);
256
- static void internal_set_time(grpc_error** err, grpc_error_times which,
361
+ static void internal_set_time(grpc_error_handle* err, grpc_error_times which,
257
362
  gpr_timespec value) {
258
363
  uint8_t slot = (*err)->times[which];
259
364
  if (slot == UINT8_MAX) {
@@ -270,7 +375,8 @@ static void internal_set_time(grpc_error** err, grpc_error_times which,
270
375
  memcpy((*err)->arena + slot, &value, sizeof(value));
271
376
  }
272
377
 
273
- static void internal_add_error(grpc_error** err, grpc_error* new_err) {
378
+ static void internal_add_error(grpc_error_handle* err,
379
+ grpc_error_handle new_err) {
274
380
  grpc_linked_error new_last = {new_err, UINT8_MAX};
275
381
  uint8_t slot = get_placement(err, sizeof(grpc_linked_error));
276
382
  if (slot == UINT8_MAX) {
@@ -306,25 +412,16 @@ static void internal_add_error(grpc_error** err, grpc_error* new_err) {
306
412
  // It is very common to include and extra int and string in an error
307
413
  #define SURPLUS_CAPACITY (2 * SLOTS_PER_INT + SLOTS_PER_TIME)
308
414
 
309
- static gpr_atm g_error_creation_allowed = true;
310
-
311
- void grpc_disable_error_creation() {
312
- gpr_atm_no_barrier_store(&g_error_creation_allowed, false);
313
- }
314
-
315
- void grpc_enable_error_creation() {
316
- gpr_atm_no_barrier_store(&g_error_creation_allowed, true);
317
- }
318
-
319
- grpc_error* grpc_error_create(const char* file, int line,
320
- const grpc_slice& desc, grpc_error** referencing,
321
- size_t num_referencing) {
415
+ grpc_error_handle grpc_error_create(const char* file, int line,
416
+ const grpc_slice& desc,
417
+ grpc_error_handle* referencing,
418
+ size_t num_referencing) {
322
419
  GPR_TIMER_SCOPE("grpc_error_create", 0);
323
420
  uint8_t initial_arena_capacity = static_cast<uint8_t>(
324
421
  DEFAULT_ERROR_CAPACITY +
325
422
  static_cast<uint8_t>(num_referencing * SLOTS_PER_LINKED_ERROR) +
326
423
  SURPLUS_CAPACITY);
327
- grpc_error* err = static_cast<grpc_error*>(
424
+ grpc_error_handle err = static_cast<grpc_error_handle>(
328
425
  gpr_malloc(sizeof(*err) + initial_arena_capacity * sizeof(intptr_t)));
329
426
  if (err == nullptr) { // TODO(ctiller): make gpr_malloc return NULL
330
427
  return GRPC_ERROR_OOM;
@@ -370,7 +467,7 @@ grpc_error* grpc_error_create(const char* file, int line,
370
467
  return err;
371
468
  }
372
469
 
373
- static void ref_strs(grpc_error* err) {
470
+ static void ref_strs(grpc_error_handle err) {
374
471
  for (size_t i = 0; i < GRPC_ERROR_STR_MAX; ++i) {
375
472
  uint8_t slot = err->strs[i];
376
473
  if (slot != UINT8_MAX) {
@@ -380,7 +477,7 @@ static void ref_strs(grpc_error* err) {
380
477
  }
381
478
  }
382
479
 
383
- static void ref_errs(grpc_error* err) {
480
+ static void ref_errs(grpc_error_handle err) {
384
481
  uint8_t slot = err->first_err;
385
482
  while (slot != UINT8_MAX) {
386
483
  grpc_linked_error* lerr =
@@ -390,9 +487,9 @@ static void ref_errs(grpc_error* err) {
390
487
  }
391
488
  }
392
489
 
393
- static grpc_error* copy_error_and_unref(grpc_error* in) {
490
+ static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
394
491
  GPR_TIMER_SCOPE("copy_error_and_unref", 0);
395
- grpc_error* out;
492
+ grpc_error_handle out;
396
493
  if (grpc_error_is_special(in)) {
397
494
  out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
398
495
  if (in == GRPC_ERROR_NONE) {
@@ -417,7 +514,7 @@ static grpc_error* copy_error_and_unref(grpc_error* in) {
417
514
  static_cast<uint8_t> SLOTS_PER_STR) {
418
515
  new_arena_capacity = static_cast<uint8_t>(3 * new_arena_capacity / 2);
419
516
  }
420
- out = static_cast<grpc_error*>(
517
+ out = static_cast<grpc_error_handle>(
421
518
  gpr_malloc(sizeof(*in) + new_arena_capacity * sizeof(intptr_t)));
422
519
  #ifndef NDEBUG
423
520
  if (grpc_trace_error_refcount.enabled()) {
@@ -441,10 +538,10 @@ static grpc_error* copy_error_and_unref(grpc_error* in) {
441
538
  return out;
442
539
  }
443
540
 
444
- grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which,
445
- intptr_t value) {
541
+ grpc_error_handle grpc_error_set_int(grpc_error_handle src,
542
+ grpc_error_ints which, intptr_t value) {
446
543
  GPR_TIMER_SCOPE("grpc_error_set_int", 0);
447
- grpc_error* new_err = copy_error_and_unref(src);
544
+ grpc_error_handle new_err = copy_error_and_unref(src);
448
545
  internal_set_int(&new_err, which, value);
449
546
  return new_err;
450
547
  }
@@ -464,7 +561,8 @@ const special_error_status_map error_status_map[] = {
464
561
  strlen("Cancelled")}, // GRPC_ERROR_CANCELLED
465
562
  };
466
563
 
467
- bool grpc_error_get_int(grpc_error* err, grpc_error_ints which, intptr_t* p) {
564
+ bool grpc_error_get_int(grpc_error_handle err, grpc_error_ints which,
565
+ intptr_t* p) {
468
566
  GPR_TIMER_SCOPE("grpc_error_get_int", 0);
469
567
  if (grpc_error_is_special(err)) {
470
568
  if (which != GRPC_ERROR_INT_GRPC_STATUS) return false;
@@ -479,15 +577,16 @@ bool grpc_error_get_int(grpc_error* err, grpc_error_ints which, intptr_t* p) {
479
577
  return false;
480
578
  }
481
579
 
482
- grpc_error* grpc_error_set_str(grpc_error* src, grpc_error_strs which,
483
- const grpc_slice& str) {
580
+ grpc_error_handle grpc_error_set_str(grpc_error_handle src,
581
+ grpc_error_strs which,
582
+ const grpc_slice& str) {
484
583
  GPR_TIMER_SCOPE("grpc_error_set_str", 0);
485
- grpc_error* new_err = copy_error_and_unref(src);
584
+ grpc_error_handle new_err = copy_error_and_unref(src);
486
585
  internal_set_str(&new_err, which, str);
487
586
  return new_err;
488
587
  }
489
588
 
490
- bool grpc_error_get_str(grpc_error* err, grpc_error_strs which,
589
+ bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
491
590
  grpc_slice* str) {
492
591
  if (grpc_error_is_special(err)) {
493
592
  if (which != GRPC_ERROR_STR_GRPC_MESSAGE) return false;
@@ -508,14 +607,15 @@ bool grpc_error_get_str(grpc_error* err, grpc_error_strs which,
508
607
  }
509
608
  }
510
609
 
511
- grpc_error* grpc_error_add_child(grpc_error* src, grpc_error* child) {
610
+ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
611
+ grpc_error_handle child) {
512
612
  GPR_TIMER_SCOPE("grpc_error_add_child", 0);
513
613
  if (src != GRPC_ERROR_NONE) {
514
614
  if (child == GRPC_ERROR_NONE) {
515
615
  /* \a child is empty. Simply return the ref to \a src */
516
616
  return src;
517
617
  } else if (child != src) {
518
- grpc_error* new_err = copy_error_and_unref(src);
618
+ grpc_error_handle new_err = copy_error_and_unref(src);
519
619
  internal_add_error(&new_err, child);
520
620
  return new_err;
521
621
  } else {
@@ -616,7 +716,7 @@ static char* fmt_int(intptr_t p) {
616
716
  return s;
617
717
  }
618
718
 
619
- static void collect_ints_kvs(grpc_error* err, kv_pairs* kvs) {
719
+ static void collect_ints_kvs(grpc_error_handle err, kv_pairs* kvs) {
620
720
  for (size_t which = 0; which < GRPC_ERROR_INT_MAX; ++which) {
621
721
  uint8_t slot = err->ints[which];
622
722
  if (slot != UINT8_MAX) {
@@ -640,7 +740,7 @@ static char* fmt_str(const grpc_slice& slice) {
640
740
  return s;
641
741
  }
642
742
 
643
- static void collect_strs_kvs(grpc_error* err, kv_pairs* kvs) {
743
+ static void collect_strs_kvs(grpc_error_handle err, kv_pairs* kvs) {
644
744
  for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
645
745
  uint8_t slot = err->strs[which];
646
746
  if (slot != UINT8_MAX) {
@@ -675,7 +775,7 @@ static char* fmt_time(gpr_timespec tm) {
675
775
  return out;
676
776
  }
677
777
 
678
- static void collect_times_kvs(grpc_error* err, kv_pairs* kvs) {
778
+ static void collect_times_kvs(grpc_error_handle err, kv_pairs* kvs) {
679
779
  for (size_t which = 0; which < GRPC_ERROR_TIME_MAX; ++which) {
680
780
  uint8_t slot = err->times[which];
681
781
  if (slot != UINT8_MAX) {
@@ -685,7 +785,7 @@ static void collect_times_kvs(grpc_error* err, kv_pairs* kvs) {
685
785
  }
686
786
  }
687
787
 
688
- static void add_errs(grpc_error* err, char** s, size_t* sz, size_t* cap) {
788
+ static void add_errs(grpc_error_handle err, char** s, size_t* sz, size_t* cap) {
689
789
  uint8_t slot = err->first_err;
690
790
  bool first = true;
691
791
  while (slot != UINT8_MAX) {
@@ -701,7 +801,7 @@ static void add_errs(grpc_error* err, char** s, size_t* sz, size_t* cap) {
701
801
  }
702
802
  }
703
803
 
704
- static char* errs_string(grpc_error* err) {
804
+ static char* errs_string(grpc_error_handle err) {
705
805
  char* s = nullptr;
706
806
  size_t sz = 0;
707
807
  size_t cap = 0;
@@ -740,7 +840,7 @@ static char* finish_kvs(kv_pairs* kvs) {
740
840
  return s;
741
841
  }
742
842
 
743
- const char* grpc_error_string(grpc_error* err) {
843
+ const char* grpc_error_string(grpc_error_handle err) {
744
844
  GPR_TIMER_SCOPE("grpc_error_string", 0);
745
845
  if (err == GRPC_ERROR_NONE) return no_error_string;
746
846
  if (err == GRPC_ERROR_OOM) return oom_error_string;
@@ -775,8 +875,12 @@ const char* grpc_error_string(grpc_error* err) {
775
875
  return out;
776
876
  }
777
877
 
778
- grpc_error* grpc_os_error(const char* file, int line, int err,
779
- const char* call_name) {
878
+ std::string grpc_error_std_string(grpc_error_handle error) {
879
+ return std::string(grpc_error_string(error));
880
+ }
881
+
882
+ grpc_error_handle grpc_os_error(const char* file, int line, int err,
883
+ const char* call_name) {
780
884
  return grpc_error_set_str(
781
885
  grpc_error_set_str(
782
886
  grpc_error_set_int(
@@ -790,10 +894,10 @@ grpc_error* grpc_os_error(const char* file, int line, int err,
790
894
  }
791
895
 
792
896
  #ifdef GPR_WINDOWS
793
- grpc_error* grpc_wsa_error(const char* file, int line, int err,
794
- const char* call_name) {
897
+ grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
898
+ const char* call_name) {
795
899
  char* utf8_message = gpr_format_message(err);
796
- grpc_error* error = grpc_error_set_str(
900
+ grpc_error_handle error = grpc_error_set_str(
797
901
  grpc_error_set_str(
798
902
  grpc_error_set_int(
799
903
  grpc_error_create(file, line,
@@ -807,7 +911,7 @@ grpc_error* grpc_wsa_error(const char* file, int line, int err,
807
911
  }
808
912
  #endif
809
913
 
810
- bool grpc_log_error(const char* what, grpc_error* error, const char* file,
914
+ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
811
915
  int line) {
812
916
  GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
813
917
  const char* msg = grpc_error_string(error);
@@ -815,3 +919,5 @@ bool grpc_log_error(const char* what, grpc_error* error, const char* file,
815
919
  GRPC_ERROR_UNREF(error);
816
920
  return false;
817
921
  }
922
+
923
+ #endif // GRPC_ERROR_IS_ABSEIL_STATUS