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
@@ -128,7 +128,7 @@ class Server : public InternallyRefCounted<Server> {
128
128
 
129
129
  // Sets up a transport. Creates a channel stack and binds the transport to
130
130
  // the server. Called from the listener when a new connection is accepted.
131
- grpc_error* SetupTransport(
131
+ grpc_error_handle SetupTransport(
132
132
  grpc_transport* transport, grpc_pollset* accepting_pollset,
133
133
  const grpc_channel_args* args,
134
134
  const RefCountedPtr<channelz::SocketNode>& socket_node,
@@ -202,8 +202,8 @@ class Server : public InternallyRefCounted<Server> {
202
202
  bool is_idempotent);
203
203
 
204
204
  // Filter vtable functions.
205
- static grpc_error* InitChannelElement(grpc_channel_element* elem,
206
- grpc_channel_element_args* args);
205
+ static grpc_error_handle InitChannelElement(
206
+ grpc_channel_element* elem, grpc_channel_element_args* args);
207
207
  static void DestroyChannelElement(grpc_channel_element* elem);
208
208
 
209
209
  private:
@@ -214,7 +214,7 @@ class Server : public InternallyRefCounted<Server> {
214
214
 
215
215
  void Destroy() ABSL_EXCLUSIVE_LOCKS_REQUIRED(server_->mu_global_);
216
216
 
217
- static void FinishDestroy(void* arg, grpc_error* error);
217
+ static void FinishDestroy(void* arg, grpc_error_handle error);
218
218
 
219
219
  RefCountedPtr<Server> server_;
220
220
  grpc_channel* channel_;
@@ -264,8 +264,8 @@ class Server : public InternallyRefCounted<Server> {
264
264
  void FailCallCreation();
265
265
 
266
266
  // Filter vtable functions.
267
- static grpc_error* InitCallElement(grpc_call_element* elem,
268
- const grpc_call_element_args* args);
267
+ static grpc_error_handle InitCallElement(
268
+ grpc_call_element* elem, const grpc_call_element_args* args);
269
269
  static void DestroyCallElement(grpc_call_element* elem,
270
270
  const grpc_call_final_info* /*final_info*/,
271
271
  grpc_closure* /*ignored*/);
@@ -274,15 +274,16 @@ class Server : public InternallyRefCounted<Server> {
274
274
 
275
275
  private:
276
276
  // Helper functions for handling calls at the top of the call stack.
277
- static void RecvInitialMetadataBatchComplete(void* arg, grpc_error* error);
277
+ static void RecvInitialMetadataBatchComplete(void* arg,
278
+ grpc_error_handle error);
278
279
  void StartNewRpc(grpc_call_element* elem);
279
- static void PublishNewRpc(void* arg, grpc_error* error);
280
+ static void PublishNewRpc(void* arg, grpc_error_handle error);
280
281
 
281
282
  // Functions used inside the call stack.
282
283
  void StartTransportStreamOpBatchImpl(grpc_call_element* elem,
283
284
  grpc_transport_stream_op_batch* batch);
284
- static void RecvInitialMetadataReady(void* arg, grpc_error* error);
285
- static void RecvTrailingMetadataReady(void* arg, grpc_error* error);
285
+ static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
286
+ static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
286
287
 
287
288
  RefCountedPtr<Server> server_;
288
289
 
@@ -309,12 +310,12 @@ class Server : public InternallyRefCounted<Server> {
309
310
  uint32_t recv_initial_metadata_flags_ = 0;
310
311
  grpc_closure recv_initial_metadata_ready_;
311
312
  grpc_closure* original_recv_initial_metadata_ready_;
312
- grpc_error* recv_initial_metadata_error_ = GRPC_ERROR_NONE;
313
+ grpc_error_handle recv_initial_metadata_error_ = GRPC_ERROR_NONE;
313
314
 
314
315
  bool seen_recv_trailing_metadata_ready_ = false;
315
316
  grpc_closure recv_trailing_metadata_ready_;
316
317
  grpc_closure* original_recv_trailing_metadata_ready_;
317
- grpc_error* recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
318
+ grpc_error_handle recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
318
319
 
319
320
  grpc_closure publish_;
320
321
 
@@ -336,7 +337,7 @@ class Server : public InternallyRefCounted<Server> {
336
337
  grpc_cq_completion completion;
337
338
  };
338
339
 
339
- static void ListenerDestroyDone(void* arg, grpc_error* error);
340
+ static void ListenerDestroyDone(void* arg, grpc_error_handle error);
340
341
 
341
342
  static void DoneShutdownEvent(void* server,
342
343
  grpc_cq_completion* /*completion*/) {
@@ -345,13 +346,13 @@ class Server : public InternallyRefCounted<Server> {
345
346
 
346
347
  static void DoneRequestEvent(void* req, grpc_cq_completion* completion);
347
348
 
348
- void FailCall(size_t cq_idx, RequestedCall* rc, grpc_error* error);
349
+ void FailCall(size_t cq_idx, RequestedCall* rc, grpc_error_handle error);
349
350
  grpc_call_error QueueRequestedCall(size_t cq_idx, RequestedCall* rc);
350
351
 
351
352
  void MaybeFinishShutdown() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_global_)
352
353
  ABSL_LOCKS_EXCLUDED(mu_call_);
353
354
 
354
- void KillPendingWorkLocked(grpc_error* error)
355
+ void KillPendingWorkLocked(grpc_error_handle error)
355
356
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_call_);
356
357
 
357
358
  static grpc_call_error ValidateServerRequest(
@@ -30,9 +30,9 @@
30
30
  #include "src/core/lib/slice/slice_string_helpers.h"
31
31
  #include "src/core/lib/surface/validate_metadata.h"
32
32
 
33
- static grpc_error* conforms_to(const grpc_slice& slice,
34
- const uint8_t* legal_bits,
35
- const char* err_desc) {
33
+ static grpc_error_handle conforms_to(const grpc_slice& slice,
34
+ const uint8_t* legal_bits,
35
+ const char* err_desc) {
36
36
  const uint8_t* p = GRPC_SLICE_START_PTR(slice);
37
37
  const uint8_t* e = GRPC_SLICE_END_PTR(slice);
38
38
  for (; p != e; p++) {
@@ -40,7 +40,7 @@ static grpc_error* conforms_to(const grpc_slice& slice,
40
40
  int byte = idx / 8;
41
41
  int bit = idx % 8;
42
42
  if ((legal_bits[byte] & (1 << bit)) == 0) {
43
- grpc_error* error = grpc_error_set_str(
43
+ grpc_error_handle error = grpc_error_set_str(
44
44
  grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_desc),
45
45
  GRPC_ERROR_INT_OFFSET,
46
46
  p - GRPC_SLICE_START_PTR(slice)),
@@ -52,13 +52,13 @@ static grpc_error* conforms_to(const grpc_slice& slice,
52
52
  return GRPC_ERROR_NONE;
53
53
  }
54
54
 
55
- static int error2int(grpc_error* error) {
55
+ static int error2int(grpc_error_handle error) {
56
56
  int r = (error == GRPC_ERROR_NONE);
57
57
  GRPC_ERROR_UNREF(error);
58
58
  return r;
59
59
  }
60
60
 
61
- grpc_error* grpc_validate_header_key_is_legal(const grpc_slice& slice) {
61
+ grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) {
62
62
  static const uint8_t legal_header_bits[256 / 8] = {
63
63
  0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0x03, 0x00, 0x00, 0x00,
64
64
  0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -82,7 +82,7 @@ int grpc_header_key_is_legal(grpc_slice slice) {
82
82
  return error2int(grpc_validate_header_key_is_legal(slice));
83
83
  }
84
84
 
85
- grpc_error* grpc_validate_header_nonbin_value_is_legal(
85
+ grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
86
86
  const grpc_slice& slice) {
87
87
  static const uint8_t legal_header_bits[256 / 8] = {
88
88
  0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@@ -27,8 +27,9 @@
27
27
 
28
28
  #include "src/core/lib/iomgr/error.h"
29
29
 
30
- grpc_error* grpc_validate_header_key_is_legal(const grpc_slice& slice);
31
- grpc_error* grpc_validate_header_nonbin_value_is_legal(const grpc_slice& slice);
30
+ grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice);
31
+ grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
32
+ const grpc_slice& slice);
32
33
 
33
34
  int grpc_is_binary_header_internal(const grpc_slice& slice);
34
35
  inline int grpc_key_is_binary_header(const uint8_t* buf, size_t length) {
@@ -23,6 +23,8 @@
23
23
 
24
24
  #include <grpc/grpc.h>
25
25
 
26
- const char* grpc_version_string(void) { return "15.0.0"; }
26
+ const char* grpc_version_string(void) { return "16.0.0"; }
27
27
 
28
- const char* grpc_g_stands_for(void) { return "gilded"; }
28
+ const char* grpc_g_stands_for(void) {
29
+ return "guadalupe_river_park_conservancy";
30
+ }
@@ -59,7 +59,7 @@ bool SliceBufferByteStream::Next(size_t /*max_size_hint*/,
59
59
  return true;
60
60
  }
61
61
 
62
- grpc_error* SliceBufferByteStream::Pull(grpc_slice* slice) {
62
+ grpc_error_handle SliceBufferByteStream::Pull(grpc_slice* slice) {
63
63
  if (GPR_UNLIKELY(shutdown_error_ != GRPC_ERROR_NONE)) {
64
64
  return GRPC_ERROR_REF(shutdown_error_);
65
65
  }
@@ -67,7 +67,7 @@ grpc_error* SliceBufferByteStream::Pull(grpc_slice* slice) {
67
67
  return GRPC_ERROR_NONE;
68
68
  }
69
69
 
70
- void SliceBufferByteStream::Shutdown(grpc_error* error) {
70
+ void SliceBufferByteStream::Shutdown(grpc_error_handle error) {
71
71
  GRPC_ERROR_UNREF(shutdown_error_);
72
72
  shutdown_error_ = error;
73
73
  }
@@ -117,7 +117,7 @@ bool ByteStreamCache::CachingByteStream::Next(size_t max_size_hint,
117
117
  return cache_->underlying_stream_->Next(max_size_hint, on_complete);
118
118
  }
119
119
 
120
- grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
120
+ grpc_error_handle ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
121
121
  if (shutdown_error_ != GRPC_ERROR_NONE) {
122
122
  return GRPC_ERROR_REF(shutdown_error_);
123
123
  }
@@ -128,7 +128,7 @@ grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
128
128
  return GRPC_ERROR_NONE;
129
129
  }
130
130
  GPR_ASSERT(cache_->underlying_stream_ != nullptr);
131
- grpc_error* error = cache_->underlying_stream_->Pull(slice);
131
+ grpc_error_handle error = cache_->underlying_stream_->Pull(slice);
132
132
  if (error == GRPC_ERROR_NONE) {
133
133
  grpc_slice_buffer_add(&cache_->cache_buffer_,
134
134
  grpc_slice_ref_internal(*slice));
@@ -142,7 +142,7 @@ grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
142
142
  return error;
143
143
  }
144
144
 
145
- void ByteStreamCache::CachingByteStream::Shutdown(grpc_error* error) {
145
+ void ByteStreamCache::CachingByteStream::Shutdown(grpc_error_handle error) {
146
146
  GRPC_ERROR_UNREF(shutdown_error_);
147
147
  shutdown_error_ = GRPC_ERROR_REF(error);
148
148
  if (cache_->underlying_stream_ != nullptr) {
@@ -56,7 +56,7 @@ class ByteStream : public Orphanable {
56
56
  // indicated by Next().
57
57
  //
58
58
  // Once a slice is returned into *slice, it is owned by the caller.
59
- virtual grpc_error* Pull(grpc_slice* slice) = 0;
59
+ virtual grpc_error_handle Pull(grpc_slice* slice) = 0;
60
60
 
61
61
  // Shuts down the byte stream.
62
62
  //
@@ -65,7 +65,7 @@ class ByteStream : public Orphanable {
65
65
  //
66
66
  // The next call to Pull() (if any) will return the error passed to
67
67
  // Shutdown().
68
- virtual void Shutdown(grpc_error* error) = 0;
68
+ virtual void Shutdown(grpc_error_handle error) = 0;
69
69
 
70
70
  uint32_t length() const { return length_; }
71
71
  uint32_t flags() const { return flags_; }
@@ -97,11 +97,11 @@ class SliceBufferByteStream : public ByteStream {
97
97
  void Orphan() override;
98
98
 
99
99
  bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
100
- grpc_error* Pull(grpc_slice* slice) override;
101
- void Shutdown(grpc_error* error) override;
100
+ grpc_error_handle Pull(grpc_slice* slice) override;
101
+ void Shutdown(grpc_error_handle error) override;
102
102
 
103
103
  private:
104
- grpc_error* shutdown_error_ = GRPC_ERROR_NONE;
104
+ grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE;
105
105
  grpc_slice_buffer backing_buffer_;
106
106
  };
107
107
 
@@ -131,8 +131,8 @@ class ByteStreamCache {
131
131
  void Orphan() override;
132
132
 
133
133
  bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
134
- grpc_error* Pull(grpc_slice* slice) override;
135
- void Shutdown(grpc_error* error) override;
134
+ grpc_error_handle Pull(grpc_slice* slice) override;
135
+ void Shutdown(grpc_error_handle error) override;
136
136
 
137
137
  // Resets the byte stream to the start of the underlying stream.
138
138
  void Reset();
@@ -141,7 +141,7 @@ class ByteStreamCache {
141
141
  ByteStreamCache* cache_;
142
142
  size_t cursor_ = 0;
143
143
  size_t offset_ = 0;
144
- grpc_error* shutdown_error_ = GRPC_ERROR_NONE;
144
+ grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE;
145
145
  };
146
146
 
147
147
  explicit ByteStreamCache(OrphanablePtr<ByteStream> underlying_stream);
@@ -73,7 +73,7 @@ class AsyncConnectivityStateWatcherInterface::Notifier {
73
73
  }
74
74
 
75
75
  private:
76
- static void SendNotification(void* arg, grpc_error* /*ignored*/) {
76
+ static void SendNotification(void* arg, grpc_error_handle /*ignored*/) {
77
77
  Notifier* self = static_cast<Notifier*>(arg);
78
78
  if (GRPC_TRACE_FLAG_ENABLED(grpc_connectivity_state_trace)) {
79
79
  gpr_log(GPR_INFO, "watcher %p: delivering async notification for %s (%s)",
@@ -25,8 +25,8 @@
25
25
  #include "src/core/lib/slice/slice_internal.h"
26
26
  #include "src/core/lib/transport/status_conversion.h"
27
27
 
28
- static grpc_error* recursively_find_error_with_field(grpc_error* error,
29
- grpc_error_ints which) {
28
+ static grpc_error_handle recursively_find_error_with_field(
29
+ grpc_error_handle error, grpc_error_ints which) {
30
30
  intptr_t unused;
31
31
  // If the error itself has a status code, return it.
32
32
  if (grpc_error_get_int(error, which, &unused)) {
@@ -38,14 +38,15 @@ static grpc_error* recursively_find_error_with_field(grpc_error* error,
38
38
  while (slot != UINT8_MAX) {
39
39
  grpc_linked_error* lerr =
40
40
  reinterpret_cast<grpc_linked_error*>(error->arena + slot);
41
- grpc_error* result = recursively_find_error_with_field(lerr->err, which);
41
+ grpc_error_handle result =
42
+ recursively_find_error_with_field(lerr->err, which);
42
43
  if (result) return result;
43
44
  slot = lerr->next;
44
45
  }
45
46
  return nullptr;
46
47
  }
47
48
 
48
- void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
49
+ void grpc_error_get_status(grpc_error_handle error, grpc_millis deadline,
49
50
  grpc_status_code* code, grpc_slice* slice,
50
51
  grpc_http2_error_code* http_error,
51
52
  const char** error_string) {
@@ -71,7 +72,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
71
72
 
72
73
  // Start with the parent error and recurse through the tree of children
73
74
  // until we find the first one that has a status code.
74
- grpc_error* found_error =
75
+ grpc_error_handle found_error =
75
76
  recursively_find_error_with_field(error, GRPC_ERROR_INT_GRPC_STATUS);
76
77
  if (found_error == nullptr) {
77
78
  /// If no grpc-status exists, retry through the tree to find a http2 error
@@ -96,7 +97,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
96
97
  if (code != nullptr) *code = status;
97
98
 
98
99
  if (error_string != nullptr && status != GRPC_STATUS_OK) {
99
- *error_string = gpr_strdup(grpc_error_string(error));
100
+ *error_string = gpr_strdup(grpc_error_std_string(error).c_str());
100
101
  }
101
102
 
102
103
  if (http_error != nullptr) {
@@ -123,7 +124,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
123
124
  }
124
125
  }
125
126
 
126
- absl::Status grpc_error_to_absl_status(grpc_error* error) {
127
+ absl::Status grpc_error_to_absl_status(grpc_error_handle error) {
127
128
  grpc_status_code status;
128
129
  // TODO(yashykt): This should be updated once we decide on how to use the
129
130
  // absl::Status payload to capture all the contents of grpc_error.
@@ -136,7 +137,17 @@ absl::Status grpc_error_to_absl_status(grpc_error* error) {
136
137
  GRPC_SLICE_LENGTH(message)));
137
138
  }
138
139
 
139
- bool grpc_error_has_clear_grpc_status(grpc_error* error) {
140
+ grpc_error_handle absl_status_to_grpc_error(absl::Status status) {
141
+ // Special error checks
142
+ if (status.ok()) {
143
+ return GRPC_ERROR_NONE;
144
+ }
145
+ return grpc_error_set_int(
146
+ GRPC_ERROR_CREATE_FROM_STRING_VIEW(status.message()),
147
+ GRPC_ERROR_INT_GRPC_STATUS, static_cast<grpc_status_code>(status.code()));
148
+ }
149
+
150
+ bool grpc_error_has_clear_grpc_status(grpc_error_handle error) {
140
151
  intptr_t unused;
141
152
  if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &unused)) {
142
153
  return true;
@@ -34,19 +34,25 @@
34
34
  /// be populated with the entire error string. If any of the attributes (code,
35
35
  /// msg, http_status, error_string) are unneeded, they can be passed as
36
36
  /// NULL.
37
- void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
37
+ void grpc_error_get_status(grpc_error_handle error, grpc_millis deadline,
38
38
  grpc_status_code* code, grpc_slice* slice,
39
39
  grpc_http2_error_code* http_error,
40
40
  const char** error_string);
41
41
 
42
- /// Utility Function to convert a grpc_error * \a error to an absl::Status.
43
- /// Does NOT consume a ref to grpc_error.
44
- absl::Status grpc_error_to_absl_status(grpc_error* error);
42
+ /// Utility Function to convert a grpc_error_handle \a error to an
43
+ /// absl::Status. Does NOT consume a ref to grpc_error.
44
+ absl::Status grpc_error_to_absl_status(grpc_error_handle error);
45
+
46
+ /// Utility function to convert an absl::Status \a status to grpc_error. Note
47
+ /// that this method does not return "special case" errors such as
48
+ /// GRPC_ERROR_CANCELLED, with the exception of GRPC_ERROR_NONE returned for
49
+ /// \a absl::OkStatus().
50
+ grpc_error_handle absl_status_to_grpc_error(absl::Status status);
45
51
 
46
52
  /// A utility function to check whether there is a clear status code that
47
53
  /// doesn't need to be guessed in \a error. This means that \a error or some
48
54
  /// child has GRPC_ERROR_INT_GRPC_STATUS set, or that it is GRPC_ERROR_NONE or
49
55
  /// GRPC_ERROR_CANCELLED
50
- bool grpc_error_has_clear_grpc_status(grpc_error* error);
56
+ bool grpc_error_has_clear_grpc_status(grpc_error_handle error);
51
57
 
52
58
  #endif /* GRPC_CORE_LIB_TRANSPORT_ERROR_UTILS_H */
@@ -94,22 +94,23 @@ void grpc_metadata_batch_destroy(grpc_metadata_batch* batch) {
94
94
  }
95
95
  }
96
96
 
97
- grpc_error* grpc_attach_md_to_error(grpc_error* src, grpc_mdelem md) {
98
- grpc_error* out = grpc_error_set_str(
97
+ grpc_error_handle grpc_attach_md_to_error(grpc_error_handle src,
98
+ grpc_mdelem md) {
99
+ grpc_error_handle out = grpc_error_set_str(
99
100
  grpc_error_set_str(src, GRPC_ERROR_STR_KEY,
100
101
  grpc_slice_ref_internal(GRPC_MDKEY(md))),
101
102
  GRPC_ERROR_STR_VALUE, grpc_slice_ref_internal(GRPC_MDVALUE(md)));
102
103
  return out;
103
104
  }
104
105
 
105
- static grpc_error* GPR_ATTRIBUTE_NOINLINE error_with_md(grpc_mdelem md) {
106
+ static grpc_error_handle GPR_ATTRIBUTE_NOINLINE error_with_md(grpc_mdelem md) {
106
107
  return grpc_attach_md_to_error(
107
108
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unallowed duplicate metadata"), md);
108
109
  }
109
110
 
110
- static grpc_error* link_callout(grpc_metadata_batch* batch,
111
- grpc_linked_mdelem* storage,
112
- grpc_metadata_batch_callouts_index idx) {
111
+ static grpc_error_handle link_callout(grpc_metadata_batch* batch,
112
+ grpc_linked_mdelem* storage,
113
+ grpc_metadata_batch_callouts_index idx) {
113
114
  GPR_DEBUG_ASSERT(idx >= 0 && idx < GRPC_BATCH_CALLOUTS_COUNT);
114
115
  if (GPR_LIKELY(batch->idx.array[idx] == nullptr)) {
115
116
  ++batch->list.default_count;
@@ -119,12 +120,12 @@ static grpc_error* link_callout(grpc_metadata_batch* batch,
119
120
  return error_with_md(storage->md);
120
121
  }
121
122
 
122
- static grpc_error* maybe_link_callout(grpc_metadata_batch* batch,
123
- grpc_linked_mdelem* storage)
123
+ static grpc_error_handle maybe_link_callout(grpc_metadata_batch* batch,
124
+ grpc_linked_mdelem* storage)
124
125
  GRPC_MUST_USE_RESULT;
125
126
 
126
- static grpc_error* maybe_link_callout(grpc_metadata_batch* batch,
127
- grpc_linked_mdelem* storage) {
127
+ static grpc_error_handle maybe_link_callout(grpc_metadata_batch* batch,
128
+ grpc_linked_mdelem* storage) {
128
129
  grpc_metadata_batch_callouts_index idx =
129
130
  GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md));
130
131
  if (idx == GRPC_BATCH_CALLOUTS_COUNT) {
@@ -145,9 +146,9 @@ static void maybe_unlink_callout(grpc_metadata_batch* batch,
145
146
  batch->idx.array[idx] = nullptr;
146
147
  }
147
148
 
148
- grpc_error* grpc_metadata_batch_add_head(grpc_metadata_batch* batch,
149
- grpc_linked_mdelem* storage,
150
- grpc_mdelem elem_to_add) {
149
+ grpc_error_handle grpc_metadata_batch_add_head(grpc_metadata_batch* batch,
150
+ grpc_linked_mdelem* storage,
151
+ grpc_mdelem elem_to_add) {
151
152
  GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add));
152
153
  storage->md = elem_to_add;
153
154
  return grpc_metadata_batch_link_head(batch, storage);
@@ -169,10 +170,10 @@ static void link_head(grpc_mdelem_list* list, grpc_linked_mdelem* storage) {
169
170
  assert_valid_list(list);
170
171
  }
171
172
 
172
- grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
173
- grpc_linked_mdelem* storage) {
173
+ grpc_error_handle grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
174
+ grpc_linked_mdelem* storage) {
174
175
  assert_valid_callouts(batch);
175
- grpc_error* err = maybe_link_callout(batch, storage);
176
+ grpc_error_handle err = maybe_link_callout(batch, storage);
176
177
  if (err != GRPC_ERROR_NONE) {
177
178
  assert_valid_callouts(batch);
178
179
  return err;
@@ -185,12 +186,12 @@ grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
185
186
  // TODO(arjunroy): Need to revisit this and see what guarantees exist between
186
187
  // C-core and the internal-metadata subsystem. E.g. can we ensure a particular
187
188
  // metadata is never added twice, even in the presence of user supplied data?
188
- grpc_error* grpc_metadata_batch_link_head(
189
+ grpc_error_handle grpc_metadata_batch_link_head(
189
190
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
190
191
  grpc_metadata_batch_callouts_index idx) {
191
192
  GPR_DEBUG_ASSERT(GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)) == idx);
192
193
  assert_valid_callouts(batch);
193
- grpc_error* err = link_callout(batch, storage, idx);
194
+ grpc_error_handle err = link_callout(batch, storage, idx);
194
195
  if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) {
195
196
  assert_valid_callouts(batch);
196
197
  return err;
@@ -200,9 +201,9 @@ grpc_error* grpc_metadata_batch_link_head(
200
201
  return GRPC_ERROR_NONE;
201
202
  }
202
203
 
203
- grpc_error* grpc_metadata_batch_add_tail(grpc_metadata_batch* batch,
204
- grpc_linked_mdelem* storage,
205
- grpc_mdelem elem_to_add) {
204
+ grpc_error_handle grpc_metadata_batch_add_tail(grpc_metadata_batch* batch,
205
+ grpc_linked_mdelem* storage,
206
+ grpc_mdelem elem_to_add) {
206
207
  GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add));
207
208
  storage->md = elem_to_add;
208
209
  return grpc_metadata_batch_link_tail(batch, storage);
@@ -224,10 +225,10 @@ static void link_tail(grpc_mdelem_list* list, grpc_linked_mdelem* storage) {
224
225
  assert_valid_list(list);
225
226
  }
226
227
 
227
- grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
228
- grpc_linked_mdelem* storage) {
228
+ grpc_error_handle grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
229
+ grpc_linked_mdelem* storage) {
229
230
  assert_valid_callouts(batch);
230
- grpc_error* err = maybe_link_callout(batch, storage);
231
+ grpc_error_handle err = maybe_link_callout(batch, storage);
231
232
  if (err != GRPC_ERROR_NONE) {
232
233
  assert_valid_callouts(batch);
233
234
  return err;
@@ -237,12 +238,12 @@ grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
237
238
  return GRPC_ERROR_NONE;
238
239
  }
239
240
 
240
- grpc_error* grpc_metadata_batch_link_tail(
241
+ grpc_error_handle grpc_metadata_batch_link_tail(
241
242
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
242
243
  grpc_metadata_batch_callouts_index idx) {
243
244
  GPR_DEBUG_ASSERT(GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)) == idx);
244
245
  assert_valid_callouts(batch);
245
- grpc_error* err = link_callout(batch, storage, idx);
246
+ grpc_error_handle err = link_callout(batch, storage, idx);
246
247
  if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) {
247
248
  assert_valid_callouts(batch);
248
249
  return err;
@@ -323,11 +324,11 @@ absl::optional<absl::string_view> grpc_metadata_batch_get_value(
323
324
  return *concatenated_value;
324
325
  }
325
326
 
326
- grpc_error* grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
327
- grpc_linked_mdelem* storage,
328
- grpc_mdelem new_mdelem) {
327
+ grpc_error_handle grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
328
+ grpc_linked_mdelem* storage,
329
+ grpc_mdelem new_mdelem) {
329
330
  assert_valid_callouts(batch);
330
- grpc_error* error = GRPC_ERROR_NONE;
331
+ grpc_error_handle error = GRPC_ERROR_NONE;
331
332
  grpc_mdelem old_mdelem = storage->md;
332
333
  if (!grpc_slice_eq(GRPC_MDKEY(new_mdelem), GRPC_MDKEY(old_mdelem))) {
333
334
  maybe_unlink_callout(batch, storage);
@@ -364,7 +365,7 @@ size_t grpc_metadata_batch_size(grpc_metadata_batch* batch) {
364
365
  return size;
365
366
  }
366
367
 
367
- static void add_error(grpc_error** composite, grpc_error* error,
368
+ static void add_error(grpc_error_handle* composite, grpc_error_handle error,
368
369
  const char* composite_error_string) {
369
370
  if (error == GRPC_ERROR_NONE) return;
370
371
  if (*composite == GRPC_ERROR_NONE) {
@@ -373,12 +374,11 @@ static void add_error(grpc_error** composite, grpc_error* error,
373
374
  *composite = grpc_error_add_child(*composite, error);
374
375
  }
375
376
 
376
- grpc_error* grpc_metadata_batch_filter(grpc_metadata_batch* batch,
377
- grpc_metadata_batch_filter_func func,
378
- void* user_data,
379
- const char* composite_error_string) {
377
+ grpc_error_handle grpc_metadata_batch_filter(
378
+ grpc_metadata_batch* batch, grpc_metadata_batch_filter_func func,
379
+ void* user_data, const char* composite_error_string) {
380
380
  grpc_linked_mdelem* l = batch->list.head;
381
- grpc_error* error = GRPC_ERROR_NONE;
381
+ grpc_error_handle error = GRPC_ERROR_NONE;
382
382
  while (l) {
383
383
  grpc_linked_mdelem* next = l->next;
384
384
  grpc_filtered_mdelem new_mdelem = func(user_data, l->md);
@@ -402,7 +402,7 @@ void grpc_metadata_batch_copy(grpc_metadata_batch* src,
402
402
  for (grpc_linked_mdelem* elem = src->list.head; elem != nullptr;
403
403
  elem = elem->next) {
404
404
  // Error unused in non-debug builds.
405
- grpc_error* GRPC_UNUSED error = grpc_metadata_batch_add_tail(
405
+ grpc_error_handle GRPC_UNUSED error = grpc_metadata_batch_add_tail(
406
406
  dst, &storage[i++], GRPC_MDELEM_REF(elem->md));
407
407
  // The only way that grpc_metadata_batch_add_tail() can fail is if
408
408
  // there's a duplicate entry for a callout. However, that can't be