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
@@ -51,7 +51,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
51
51
  grpc_transport* transport = grpc_create_chttp2_transport(
52
52
  server_args, server_endpoint, false /* is_client */);
53
53
 
54
- grpc_error* error =
54
+ grpc_error_handle error =
55
55
  core_server->SetupTransport(transport, nullptr, server_args, nullptr);
56
56
  if (error == GRPC_ERROR_NONE) {
57
57
  for (grpc_pollset* pollset : core_server->pollsets()) {
@@ -60,7 +60,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
60
60
  grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr);
61
61
  } else {
62
62
  gpr_log(GPR_ERROR, "Failed to create channel: %s",
63
- grpc_error_string(error));
63
+ grpc_error_std_string(error).c_str());
64
64
  GRPC_ERROR_UNREF(error);
65
65
  grpc_transport_destroy(transport);
66
66
  }
@@ -40,7 +40,7 @@
40
40
  namespace {
41
41
 
42
42
  grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
43
- grpc_error** error) {
43
+ grpc_error_handle* error) {
44
44
  grpc_server_credentials* server_credentials =
45
45
  grpc_find_server_credentials_in_args(args);
46
46
  if (server_credentials == nullptr) {
@@ -69,7 +69,7 @@ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
69
69
  int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
70
70
  grpc_server_credentials* creds) {
71
71
  grpc_core::ExecCtx exec_ctx;
72
- grpc_error* err = GRPC_ERROR_NONE;
72
+ grpc_error_handle err = GRPC_ERROR_NONE;
73
73
  grpc_core::RefCountedPtr<grpc_server_security_connector> sc;
74
74
  int port_num = 0;
75
75
  grpc_channel_args* args = nullptr;
@@ -121,8 +121,7 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
121
121
  done:
122
122
  sc.reset(DEBUG_LOCATION, "server");
123
123
  if (err != GRPC_ERROR_NONE) {
124
- const char* msg = grpc_error_string(err);
125
- gpr_log(GPR_ERROR, "%s", msg);
124
+ gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
126
125
 
127
126
  GRPC_ERROR_UNREF(err);
128
127
  }
@@ -100,23 +100,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
100
100
  "chttp2_refcount");
101
101
 
102
102
  // forward declarations of various callbacks that we'll build closures around
103
- static void write_action_begin_locked(void* t, grpc_error* error);
104
- static void write_action(void* t, grpc_error* error);
105
- static void write_action_end(void* t, grpc_error* error);
106
- static void write_action_end_locked(void* t, grpc_error* error);
103
+ static void write_action_begin_locked(void* t, grpc_error_handle error);
104
+ static void write_action(void* t, grpc_error_handle error);
105
+ static void write_action_end(void* t, grpc_error_handle error);
106
+ static void write_action_end_locked(void* t, grpc_error_handle error);
107
107
 
108
- static void read_action(void* t, grpc_error* error);
109
- static void read_action_locked(void* t, grpc_error* error);
108
+ static void read_action(void* t, grpc_error_handle error);
109
+ static void read_action_locked(void* t, grpc_error_handle error);
110
110
  static void continue_read_action_locked(grpc_chttp2_transport* t);
111
111
 
112
- static void complete_fetch(void* gs, grpc_error* error);
113
- static void complete_fetch_locked(void* gs, grpc_error* error);
112
+ static void complete_fetch(void* gs, grpc_error_handle error);
113
+ static void complete_fetch_locked(void* gs, grpc_error_handle error);
114
114
  // Set a transport level setting, and push it to our peer
115
115
  static void queue_setting_update(grpc_chttp2_transport* t,
116
116
  grpc_chttp2_setting_id id, uint32_t value);
117
117
 
118
118
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
119
- grpc_error* error);
119
+ grpc_error_handle error);
120
120
 
121
121
  // Start new streams that have been created if we can
122
122
  static void maybe_start_some_streams(grpc_chttp2_transport* t);
@@ -126,40 +126,43 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
126
126
  const absl::Status& status,
127
127
  const char* reason);
128
128
 
129
- static void benign_reclaimer(void* arg, grpc_error* error);
130
- static void destructive_reclaimer(void* arg, grpc_error* error);
131
- static void benign_reclaimer_locked(void* arg, grpc_error* error);
132
- static void destructive_reclaimer_locked(void* arg, grpc_error* error);
129
+ static void benign_reclaimer(void* arg, grpc_error_handle error);
130
+ static void destructive_reclaimer(void* arg, grpc_error_handle error);
131
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
132
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
133
133
 
134
134
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
135
135
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
136
136
 
137
- static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
138
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
139
-
140
- static void start_bdp_ping(void* tp, grpc_error* error);
141
- static void finish_bdp_ping(void* tp, grpc_error* error);
142
- static void start_bdp_ping_locked(void* tp, grpc_error* error);
143
- static void finish_bdp_ping_locked(void* tp, grpc_error* error);
144
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error);
145
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
146
-
147
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
137
+ static void close_transport_locked(grpc_chttp2_transport* t,
138
+ grpc_error_handle error);
139
+ static void end_all_the_calls(grpc_chttp2_transport* t,
140
+ grpc_error_handle error);
141
+
142
+ static void start_bdp_ping(void* tp, grpc_error_handle error);
143
+ static void finish_bdp_ping(void* tp, grpc_error_handle error);
144
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
145
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
146
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
147
+ static void next_bdp_ping_timer_expired_locked(void* tp,
148
+ grpc_error_handle error);
149
+
150
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
148
151
  static void send_ping_locked(grpc_chttp2_transport* t,
149
152
  grpc_closure* on_initiate, grpc_closure* on_ack);
150
- static void retry_initiate_ping_locked(void* tp, grpc_error* error);
153
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
151
154
 
152
155
  // keepalive-relevant functions
153
- static void init_keepalive_ping(void* arg, grpc_error* error);
154
- static void init_keepalive_ping_locked(void* arg, grpc_error* error);
155
- static void start_keepalive_ping(void* arg, grpc_error* error);
156
- static void finish_keepalive_ping(void* arg, grpc_error* error);
157
- static void start_keepalive_ping_locked(void* arg, grpc_error* error);
158
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
159
- static void keepalive_watchdog_fired(void* arg, grpc_error* error);
160
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
156
+ static void init_keepalive_ping(void* arg, grpc_error_handle error);
157
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
158
+ static void start_keepalive_ping(void* arg, grpc_error_handle error);
159
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error);
160
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
161
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
162
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
163
+ static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
161
164
 
162
- static void reset_byte_stream(void* arg, grpc_error* error);
165
+ static void reset_byte_stream(void* arg, grpc_error_handle error);
163
166
 
164
167
  // Flow control default enabled. Can be disabled by setting
165
168
  // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
@@ -203,7 +206,7 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
203
206
  grpc_slice_buffer_destroy_internal(&outbuf);
204
207
  grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
205
208
 
206
- grpc_error* error =
209
+ grpc_error_handle error =
207
210
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
208
211
  // ContextList::Execute follows semantics of a callback function and does not
209
212
  // take a ref on error
@@ -534,7 +537,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
534
537
  }
535
538
  }
536
539
 
537
- static void destroy_transport_locked(void* tp, grpc_error* /*error*/) {
540
+ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
538
541
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
539
542
  t->destroying = 1;
540
543
  close_transport_locked(
@@ -552,7 +555,7 @@ static void destroy_transport(grpc_transport* gt) {
552
555
  }
553
556
 
554
557
  static void close_transport_locked(grpc_chttp2_transport* t,
555
- grpc_error* error) {
558
+ grpc_error_handle error) {
556
559
  end_all_the_calls(t, GRPC_ERROR_REF(error));
557
560
  cancel_pings(t, GRPC_ERROR_REF(error));
558
561
  if (t->closed_with_error == GRPC_ERROR_NONE) {
@@ -731,7 +734,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
731
734
  return 0;
732
735
  }
733
736
 
734
- static void destroy_stream_locked(void* sp, grpc_error* /*error*/) {
737
+ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
735
738
  GPR_TIMER_SCOPE("destroy_stream", 0);
736
739
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
737
740
  s->~grpc_chttp2_stream();
@@ -819,7 +822,7 @@ static void set_write_state(grpc_chttp2_transport* t,
819
822
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
820
823
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
821
824
  if (t->close_transport_on_writes_finished != nullptr) {
822
- grpc_error* err = t->close_transport_on_writes_finished;
825
+ grpc_error_handle err = t->close_transport_on_writes_finished;
823
826
  t->close_transport_on_writes_finished = nullptr;
824
827
  close_transport_locked(t, err);
825
828
  }
@@ -951,7 +954,8 @@ static const char* begin_writing_desc(bool partial) {
951
954
  }
952
955
  }
953
956
 
954
- static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
957
+ static void write_action_begin_locked(void* gt,
958
+ grpc_error_handle /*error_ignored*/) {
955
959
  GPR_TIMER_SCOPE("write_action_begin_locked", 0);
956
960
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
957
961
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
@@ -990,7 +994,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
990
994
  }
991
995
  }
992
996
 
993
- static void write_action(void* gt, grpc_error* /*error*/) {
997
+ static void write_action(void* gt, grpc_error_handle /*error*/) {
994
998
  GPR_TIMER_SCOPE("write_action", 0);
995
999
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
996
1000
  void* cl = t->cl;
@@ -1002,7 +1006,7 @@ static void write_action(void* gt, grpc_error* /*error*/) {
1002
1006
  cl);
1003
1007
  }
1004
1008
 
1005
- static void write_action_end(void* tp, grpc_error* error) {
1009
+ static void write_action_end(void* tp, grpc_error_handle error) {
1006
1010
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1007
1011
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
1008
1012
  write_action_end_locked, t, nullptr),
@@ -1011,7 +1015,7 @@ static void write_action_end(void* tp, grpc_error* error) {
1011
1015
 
1012
1016
  // Callback from the grpc_endpoint after bytes have been written by calling
1013
1017
  // sendmsg
1014
- static void write_action_end_locked(void* tp, grpc_error* error) {
1018
+ static void write_action_end_locked(void* tp, grpc_error_handle error) {
1015
1019
  GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
1016
1020
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1017
1021
 
@@ -1100,7 +1104,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1100
1104
  // received a GOAWAY with a non NO_ERROR code.
1101
1105
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1102
1106
  gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1103
- goaway_error, grpc_error_string(t->goaway_error));
1107
+ goaway_error, grpc_error_std_string(t->goaway_error).c_str());
1104
1108
  }
1105
1109
  absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1106
1110
  // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
@@ -1206,7 +1210,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
1206
1210
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1207
1211
  grpc_chttp2_stream* /*s*/,
1208
1212
  grpc_closure** pclosure,
1209
- grpc_error* error, const char* desc) {
1213
+ grpc_error_handle error,
1214
+ const char* desc) {
1210
1215
  grpc_closure* closure = *pclosure;
1211
1216
  *pclosure = nullptr;
1212
1217
  if (closure == nullptr) {
@@ -1215,7 +1220,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1215
1220
  }
1216
1221
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
1217
1222
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1218
- const char* errstr = grpc_error_string(error);
1219
1223
  gpr_log(
1220
1224
  GPR_INFO,
1221
1225
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
@@ -1225,7 +1229,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1225
1229
  CLOSURE_BARRIER_FIRST_REF_BIT),
1226
1230
  static_cast<int>(closure->next_data.scratch %
1227
1231
  CLOSURE_BARRIER_FIRST_REF_BIT),
1228
- desc, errstr, write_state_name(t->write_state));
1232
+ desc, grpc_error_std_string(error).c_str(),
1233
+ write_state_name(t->write_state));
1229
1234
  }
1230
1235
  if (error != GRPC_ERROR_NONE) {
1231
1236
  if (closure->error_data.error == GRPC_ERROR_NONE) {
@@ -1314,7 +1319,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1314
1319
  UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1315
1320
  ::complete_fetch, s,
1316
1321
  grpc_schedule_on_exec_ctx))) {
1317
- grpc_error* error = s->fetching_send_message->Pull(&s->fetching_slice);
1322
+ grpc_error_handle error =
1323
+ s->fetching_send_message->Pull(&s->fetching_slice);
1318
1324
  if (error != GRPC_ERROR_NONE) {
1319
1325
  s->fetching_send_message.reset();
1320
1326
  grpc_chttp2_cancel_stream(t, s, error);
@@ -1325,14 +1331,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1325
1331
  }
1326
1332
  }
1327
1333
 
1328
- static void complete_fetch(void* gs, grpc_error* error) {
1334
+ static void complete_fetch(void* gs, grpc_error_handle error) {
1329
1335
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1330
1336
  s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1331
1337
  ::complete_fetch_locked, s, nullptr),
1332
1338
  GRPC_ERROR_REF(error));
1333
1339
  }
1334
1340
 
1335
- static void complete_fetch_locked(void* gs, grpc_error* error) {
1341
+ static void complete_fetch_locked(void* gs, grpc_error_handle error) {
1336
1342
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1337
1343
  grpc_chttp2_transport* t = s->t;
1338
1344
  if (error == GRPC_ERROR_NONE) {
@@ -1362,7 +1368,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1362
1368
  }
1363
1369
 
1364
1370
  static void perform_stream_op_locked(void* stream_op,
1365
- grpc_error* /*error_ignored*/) {
1371
+ grpc_error_handle /*error_ignored*/) {
1366
1372
  GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
1367
1373
 
1368
1374
  grpc_transport_stream_op_batch* op =
@@ -1646,7 +1652,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1646
1652
  GRPC_ERROR_NONE);
1647
1653
  }
1648
1654
 
1649
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
1655
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1650
1656
  // callback remaining pings: they're not allowed to call into the transport,
1651
1657
  // and maybe they hold resources that need to be freed
1652
1658
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
@@ -1713,14 +1719,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1713
1719
  GRPC_ERROR_NONE);
1714
1720
  }
1715
1721
 
1716
- void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error) {
1722
+ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1717
1723
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1718
1724
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1719
1725
  retry_initiate_ping_locked, t, nullptr),
1720
1726
  GRPC_ERROR_REF(error));
1721
1727
  }
1722
1728
 
1723
- static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1729
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1724
1730
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1725
1731
  t->ping_state.is_delayed_ping_timer_set = false;
1726
1732
  if (error == GRPC_ERROR_NONE) {
@@ -1743,10 +1749,10 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1743
1749
  }
1744
1750
  }
1745
1751
 
1746
- static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
1752
+ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
1747
1753
  // We want to log this irrespective of whether http tracing is enabled
1748
1754
  gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1749
- grpc_error_string(error));
1755
+ grpc_error_std_string(error).c_str());
1750
1756
  t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1751
1757
  grpc_http2_error_code http_error;
1752
1758
  grpc_slice slice;
@@ -1784,7 +1790,7 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1784
1790
  }
1785
1791
 
1786
1792
  static void perform_transport_op_locked(void* stream_op,
1787
- grpc_error* /*error_ignored*/) {
1793
+ grpc_error_handle /*error_ignored*/) {
1788
1794
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1789
1795
  grpc_chttp2_transport* t =
1790
1796
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
@@ -1864,7 +1870,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
1864
1870
 
1865
1871
  void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1866
1872
  grpc_chttp2_stream* s) {
1867
- grpc_error* error = GRPC_ERROR_NONE;
1873
+ grpc_error_handle error = GRPC_ERROR_NONE;
1868
1874
  if (s->recv_message_ready != nullptr) {
1869
1875
  *s->recv_message = nullptr;
1870
1876
  if (s->final_metadata_requested && s->seen_error) {
@@ -2014,7 +2020,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
2014
2020
  }
2015
2021
 
2016
2022
  static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2017
- grpc_error* error) {
2023
+ grpc_error_handle error) {
2018
2024
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
2019
2025
  grpc_chttp2_stream_map_delete(&t->stream_map, id));
2020
2026
  GPR_DEBUG_ASSERT(s);
@@ -2057,7 +2063,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2057
2063
  }
2058
2064
 
2059
2065
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2060
- grpc_error* due_to_error) {
2066
+ grpc_error_handle due_to_error) {
2061
2067
  if (!t->is_client && !s->sent_trailing_metadata &&
2062
2068
  grpc_error_has_clear_grpc_status(due_to_error)) {
2063
2069
  close_from_api(t, s, due_to_error);
@@ -2081,7 +2087,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2081
2087
  }
2082
2088
 
2083
2089
  void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2084
- grpc_error* error) {
2090
+ grpc_error_handle error) {
2085
2091
  grpc_status_code status;
2086
2092
  grpc_slice slice;
2087
2093
  grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
@@ -2118,7 +2124,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2118
2124
  GRPC_ERROR_UNREF(error);
2119
2125
  }
2120
2126
 
2121
- static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2127
+ static void add_error(grpc_error_handle error, grpc_error_handle* refs,
2128
+ size_t* nrefs) {
2122
2129
  if (error == GRPC_ERROR_NONE) return;
2123
2130
  for (size_t i = 0; i < *nrefs; i++) {
2124
2131
  if (error == refs[i]) {
@@ -2129,14 +2136,15 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2129
2136
  ++*nrefs;
2130
2137
  }
2131
2138
 
2132
- static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2133
- const char* main_error_msg) {
2134
- grpc_error* refs[3];
2139
+ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2140
+ grpc_chttp2_stream* s,
2141
+ const char* main_error_msg) {
2142
+ grpc_error_handle refs[3];
2135
2143
  size_t nrefs = 0;
2136
2144
  add_error(s->read_closed_error, refs, &nrefs);
2137
2145
  add_error(s->write_closed_error, refs, &nrefs);
2138
2146
  add_error(extra_error, refs, &nrefs);
2139
- grpc_error* error = GRPC_ERROR_NONE;
2147
+ grpc_error_handle error = GRPC_ERROR_NONE;
2140
2148
  if (nrefs > 0) {
2141
2149
  error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2142
2150
  refs, nrefs);
@@ -2146,7 +2154,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2146
2154
  }
2147
2155
 
2148
2156
  static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2149
- grpc_chttp2_write_cb** list, grpc_error* error) {
2157
+ grpc_chttp2_write_cb** list,
2158
+ grpc_error_handle error) {
2150
2159
  while (*list) {
2151
2160
  grpc_chttp2_write_cb* cb = *list;
2152
2161
  *list = cb->next;
@@ -2159,7 +2168,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2159
2168
  }
2160
2169
 
2161
2170
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2162
- grpc_chttp2_stream* s, grpc_error* error) {
2171
+ grpc_chttp2_stream* s,
2172
+ grpc_error_handle error) {
2163
2173
  error =
2164
2174
  removal_error(error, s, "Pending writes failed due to stream closure");
2165
2175
  s->send_initial_metadata = nullptr;
@@ -2183,10 +2193,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2183
2193
 
2184
2194
  void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2185
2195
  grpc_chttp2_stream* s, int close_reads,
2186
- int close_writes, grpc_error* error) {
2196
+ int close_writes, grpc_error_handle error) {
2187
2197
  if (s->read_closed && s->write_closed) {
2188
2198
  // already closed, but we should still fake the status if needed.
2189
- grpc_error* overall_error = removal_error(error, s, "Stream removed");
2199
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2190
2200
  if (overall_error != GRPC_ERROR_NONE) {
2191
2201
  grpc_chttp2_fake_status(t, s, overall_error);
2192
2202
  }
@@ -2207,7 +2217,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2207
2217
  }
2208
2218
  if (s->read_closed && s->write_closed) {
2209
2219
  became_closed = true;
2210
- grpc_error* overall_error =
2220
+ grpc_error_handle overall_error =
2211
2221
  removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2212
2222
  if (s->id != 0) {
2213
2223
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
@@ -2236,7 +2246,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2236
2246
  }
2237
2247
 
2238
2248
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2239
- grpc_error* error) {
2249
+ grpc_error_handle error) {
2240
2250
  grpc_slice hdr;
2241
2251
  grpc_slice status_hdr;
2242
2252
  grpc_slice http_status_hdr;
@@ -2394,7 +2404,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2394
2404
  }
2395
2405
 
2396
2406
  struct cancel_stream_cb_args {
2397
- grpc_error* error;
2407
+ grpc_error_handle error;
2398
2408
  grpc_chttp2_transport* t;
2399
2409
  };
2400
2410
 
@@ -2404,7 +2414,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2404
2414
  grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2405
2415
  }
2406
2416
 
2407
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2417
+ static void end_all_the_calls(grpc_chttp2_transport* t,
2418
+ grpc_error_handle error) {
2408
2419
  intptr_t http2_error;
2409
2420
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2410
2421
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
@@ -2458,15 +2469,15 @@ void grpc_chttp2_act_on_flowctl_action(
2458
2469
  });
2459
2470
  }
2460
2471
 
2461
- static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2472
+ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2462
2473
  grpc_http_parser parser;
2463
2474
  size_t i = 0;
2464
- grpc_error* error = GRPC_ERROR_NONE;
2475
+ grpc_error_handle error = GRPC_ERROR_NONE;
2465
2476
  grpc_http_response response;
2466
2477
 
2467
2478
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2468
2479
 
2469
- grpc_error* parse_error = GRPC_ERROR_NONE;
2480
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
2470
2481
  for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
2471
2482
  parse_error =
2472
2483
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
@@ -2487,34 +2498,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2487
2498
  return error;
2488
2499
  }
2489
2500
 
2490
- static void read_action(void* tp, grpc_error* error) {
2501
+ static void read_action(void* tp, grpc_error_handle error) {
2491
2502
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2492
2503
  t->combiner->Run(
2493
2504
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2494
2505
  GRPC_ERROR_REF(error));
2495
2506
  }
2496
2507
 
2497
- static void read_action_locked(void* tp, grpc_error* error) {
2508
+ static void read_action_locked(void* tp, grpc_error_handle error) {
2498
2509
  GPR_TIMER_SCOPE("reading_action_locked", 0);
2499
2510
 
2500
2511
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2501
2512
 
2502
2513
  GRPC_ERROR_REF(error);
2503
2514
 
2504
- grpc_error* err = error;
2515
+ grpc_error_handle err = error;
2505
2516
  if (err != GRPC_ERROR_NONE) {
2506
2517
  err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2507
2518
  "Endpoint read failed", &err, 1),
2508
2519
  GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2509
2520
  t->write_state);
2510
2521
  }
2511
- GPR_SWAP(grpc_error*, err, error);
2522
+ GPR_SWAP(grpc_error_handle, err, error);
2512
2523
  GRPC_ERROR_UNREF(err);
2513
2524
  if (t->closed_with_error == GRPC_ERROR_NONE) {
2514
2525
  GPR_TIMER_SCOPE("reading_action.parse", 0);
2515
2526
  size_t i = 0;
2516
- grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2517
- GRPC_ERROR_NONE};
2527
+ grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2528
+ GRPC_ERROR_NONE};
2518
2529
  for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2519
2530
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2520
2531
  }
@@ -2605,18 +2616,18 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2605
2616
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2606
2617
  }
2607
2618
 
2608
- static void start_bdp_ping(void* tp, grpc_error* error) {
2619
+ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2609
2620
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2610
2621
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2611
2622
  start_bdp_ping_locked, t, nullptr),
2612
2623
  GRPC_ERROR_REF(error));
2613
2624
  }
2614
2625
 
2615
- static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2626
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2616
2627
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2617
2628
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2618
2629
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2619
- grpc_error_string(error));
2630
+ grpc_error_std_string(error).c_str());
2620
2631
  }
2621
2632
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2622
2633
  return;
@@ -2629,18 +2640,18 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2629
2640
  t->bdp_ping_started = true;
2630
2641
  }
2631
2642
 
2632
- static void finish_bdp_ping(void* tp, grpc_error* error) {
2643
+ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2633
2644
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2634
2645
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2635
2646
  finish_bdp_ping_locked, t, nullptr),
2636
2647
  GRPC_ERROR_REF(error));
2637
2648
  }
2638
2649
 
2639
- static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2650
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2640
2651
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2641
2652
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2642
2653
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2643
- grpc_error_string(error));
2654
+ grpc_error_std_string(error).c_str());
2644
2655
  }
2645
2656
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2646
2657
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
@@ -2666,7 +2677,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2666
2677
  &t->next_bdp_ping_timer_expired_locked);
2667
2678
  }
2668
2679
 
2669
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2680
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2670
2681
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2671
2682
  t->combiner->Run(
2672
2683
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
@@ -2674,7 +2685,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2674
2685
  GRPC_ERROR_REF(error));
2675
2686
  }
2676
2687
 
2677
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2688
+ static void next_bdp_ping_timer_expired_locked(void* tp,
2689
+ grpc_error_handle error) {
2678
2690
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2679
2691
  GPR_ASSERT(t->have_next_bdp_ping_timer);
2680
2692
  t->have_next_bdp_ping_timer = false;
@@ -2750,14 +2762,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2750
2762
  }
2751
2763
  }
2752
2764
 
2753
- static void init_keepalive_ping(void* arg, grpc_error* error) {
2765
+ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2754
2766
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2755
2767
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2756
2768
  init_keepalive_ping_locked, t, nullptr),
2757
2769
  GRPC_ERROR_REF(error));
2758
2770
  }
2759
2771
 
2760
- static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2772
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2761
2773
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2762
2774
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2763
2775
  if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2790,14 +2802,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2790
2802
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2791
2803
  }
2792
2804
 
2793
- static void start_keepalive_ping(void* arg, grpc_error* error) {
2805
+ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2794
2806
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2795
2807
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2796
2808
  start_keepalive_ping_locked, t, nullptr),
2797
2809
  GRPC_ERROR_REF(error));
2798
2810
  }
2799
2811
 
2800
- static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2812
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2801
2813
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2802
2814
  if (error != GRPC_ERROR_NONE) {
2803
2815
  return;
@@ -2818,14 +2830,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2818
2830
  t->keepalive_ping_started = true;
2819
2831
  }
2820
2832
 
2821
- static void finish_keepalive_ping(void* arg, grpc_error* error) {
2833
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2822
2834
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2823
2835
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2824
2836
  finish_keepalive_ping_locked, t, nullptr),
2825
2837
  GRPC_ERROR_REF(error));
2826
2838
  }
2827
2839
 
2828
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2840
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2829
2841
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2830
2842
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2831
2843
  if (error == GRPC_ERROR_NONE) {
@@ -2856,7 +2868,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2856
2868
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2857
2869
  }
2858
2870
 
2859
- static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2871
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2860
2872
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2861
2873
  t->combiner->Run(
2862
2874
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2864,7 +2876,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2864
2876
  GRPC_ERROR_REF(error));
2865
2877
  }
2866
2878
 
2867
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2879
+ static void keepalive_watchdog_fired_locked(void* arg,
2880
+ grpc_error_handle error) {
2868
2881
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2869
2882
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2870
2883
  if (error == GRPC_ERROR_NONE) {
@@ -2921,7 +2934,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2921
2934
  // BYTE STREAM
2922
2935
  //
2923
2936
 
2924
- static void reset_byte_stream(void* arg, grpc_error* error) {
2937
+ static void reset_byte_stream(void* arg, grpc_error_handle error) {
2925
2938
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
2926
2939
  s->pending_byte_stream = false;
2927
2940
  if (error == GRPC_ERROR_NONE) {
@@ -2952,8 +2965,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
2952
2965
  stream->byte_stream_error = GRPC_ERROR_NONE;
2953
2966
  }
2954
2967
 
2955
- void Chttp2IncomingByteStream::OrphanLocked(void* arg,
2956
- grpc_error* /*error_ignored*/) {
2968
+ void Chttp2IncomingByteStream::OrphanLocked(
2969
+ void* arg, grpc_error_handle /*error_ignored*/) {
2957
2970
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2958
2971
  grpc_chttp2_stream* s = bs->stream_;
2959
2972
  grpc_chttp2_transport* t = s->t;
@@ -2972,7 +2985,7 @@ void Chttp2IncomingByteStream::Orphan() {
2972
2985
  }
2973
2986
 
2974
2987
  void Chttp2IncomingByteStream::NextLocked(void* arg,
2975
- grpc_error* /*error_ignored*/) {
2988
+ grpc_error_handle /*error_ignored*/) {
2976
2989
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2977
2990
  grpc_chttp2_transport* t = bs->transport_;
2978
2991
  grpc_chttp2_stream* s = bs->stream_;
@@ -3042,9 +3055,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
3042
3055
  }
3043
3056
  }
3044
3057
 
3045
- grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3058
+ grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3046
3059
  GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
3047
- grpc_error* error;
3060
+ grpc_error_handle error;
3048
3061
  if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
3049
3062
  if (!stream_->unprocessed_incoming_frames_decompressed &&
3050
3063
  stream_->stream_decompression_method !=
@@ -3087,7 +3100,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3087
3100
  return GRPC_ERROR_NONE;
3088
3101
  }
3089
3102
 
3090
- void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3103
+ void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
3091
3104
  GPR_ASSERT(error != GRPC_ERROR_NONE);
3092
3105
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
3093
3106
  GRPC_ERROR_REF(error));
@@ -3097,10 +3110,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3097
3110
  grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
3098
3111
  }
3099
3112
 
3100
- grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3101
- grpc_slice* slice_out) {
3113
+ grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3114
+ grpc_slice* slice_out) {
3102
3115
  if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
3103
- grpc_error* error =
3116
+ grpc_error_handle error =
3104
3117
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
3105
3118
  transport_->combiner->Run(&stream_->reset_byte_stream,
3106
3119
  GRPC_ERROR_REF(error));
@@ -3115,8 +3128,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3115
3128
  }
3116
3129
  }
3117
3130
 
3118
- grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3119
- bool reset_on_error) {
3131
+ grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
3132
+ bool reset_on_error) {
3120
3133
  if (error == GRPC_ERROR_NONE) {
3121
3134
  if (remaining_bytes_ != 0) {
3122
3135
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
@@ -3130,7 +3143,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3130
3143
  return error;
3131
3144
  }
3132
3145
 
3133
- void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3146
+ void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
3134
3147
  GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
3135
3148
  }
3136
3149
 
@@ -3162,14 +3175,14 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
3162
3175
  }
3163
3176
  }
3164
3177
 
3165
- static void benign_reclaimer(void* arg, grpc_error* error) {
3178
+ static void benign_reclaimer(void* arg, grpc_error_handle error) {
3166
3179
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3167
3180
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3168
3181
  benign_reclaimer_locked, t, nullptr),
3169
3182
  GRPC_ERROR_REF(error));
3170
3183
  }
3171
3184
 
3172
- static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3185
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3173
3186
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3174
3187
  if (error == GRPC_ERROR_NONE &&
3175
3188
  grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
@@ -3199,14 +3212,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3199
3212
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3200
3213
  }
3201
3214
 
3202
- static void destructive_reclaimer(void* arg, grpc_error* error) {
3215
+ static void destructive_reclaimer(void* arg, grpc_error_handle error) {
3203
3216
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3204
3217
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3205
3218
  destructive_reclaimer_locked, t, nullptr),
3206
3219
  GRPC_ERROR_REF(error));
3207
3220
  }
3208
3221
 
3209
- static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3222
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3210
3223
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3211
3224
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
3212
3225
  t->destructive_reclaimer_registered = false;