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
@@ -28,8 +28,9 @@
28
28
  #include "src/core/lib/security/transport/auth_filters.h"
29
29
  #include "src/core/lib/slice/slice_internal.h"
30
30
 
31
- static void recv_initial_metadata_ready(void* arg, grpc_error* error);
32
- static void recv_trailing_metadata_ready(void* user_data, grpc_error* error);
31
+ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error);
32
+ static void recv_trailing_metadata_ready(void* user_data,
33
+ grpc_error_handle error);
33
34
 
34
35
  namespace {
35
36
  enum async_state {
@@ -79,10 +80,10 @@ struct call_data {
79
80
  grpc_transport_stream_op_batch* recv_initial_metadata_batch;
80
81
  grpc_closure* original_recv_initial_metadata_ready;
81
82
  grpc_closure recv_initial_metadata_ready;
82
- grpc_error* recv_initial_metadata_error = GRPC_ERROR_NONE;
83
+ grpc_error_handle recv_initial_metadata_error = GRPC_ERROR_NONE;
83
84
  grpc_closure recv_trailing_metadata_ready;
84
85
  grpc_closure* original_recv_trailing_metadata_ready;
85
- grpc_error* recv_trailing_metadata_error;
86
+ grpc_error_handle recv_trailing_metadata_error;
86
87
  bool seen_recv_trailing_metadata_ready = false;
87
88
  grpc_metadata_array md;
88
89
  const grpc_metadata* consumed_md;
@@ -135,7 +136,7 @@ static void on_md_processing_done_inner(grpc_call_element* elem,
135
136
  size_t num_consumed_md,
136
137
  const grpc_metadata* response_md,
137
138
  size_t num_response_md,
138
- grpc_error* error) {
139
+ grpc_error_handle error) {
139
140
  call_data* calld = static_cast<call_data*>(elem->call_data);
140
141
  grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch;
141
142
  /* TODO(jboeuf): Implement support for response_md. */
@@ -175,7 +176,7 @@ static void on_md_processing_done(
175
176
  // If the call was not cancelled while we were in flight, process the result.
176
177
  if (gpr_atm_full_cas(&calld->state, static_cast<gpr_atm>(STATE_INIT),
177
178
  static_cast<gpr_atm>(STATE_DONE))) {
178
- grpc_error* error = GRPC_ERROR_NONE;
179
+ grpc_error_handle error = GRPC_ERROR_NONE;
179
180
  if (status != GRPC_STATUS_OK) {
180
181
  if (error_details == nullptr) {
181
182
  error_details = "Authentication metadata processing failed.";
@@ -196,7 +197,7 @@ static void on_md_processing_done(
196
197
  GRPC_CALL_STACK_UNREF(calld->owning_call, "server_auth_metadata");
197
198
  }
198
199
 
199
- static void cancel_call(void* arg, grpc_error* error) {
200
+ static void cancel_call(void* arg, grpc_error_handle error) {
200
201
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
201
202
  call_data* calld = static_cast<call_data*>(elem->call_data);
202
203
  // If the result was not already processed, invoke the callback now.
@@ -206,9 +207,10 @@ static void cancel_call(void* arg, grpc_error* error) {
206
207
  on_md_processing_done_inner(elem, nullptr, 0, nullptr, 0,
207
208
  GRPC_ERROR_REF(error));
208
209
  }
210
+ GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_call");
209
211
  }
210
212
 
211
- static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
213
+ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
212
214
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
213
215
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
214
216
  call_data* calld = static_cast<call_data*>(elem->call_data);
@@ -218,6 +220,9 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
218
220
  chand->creds->auth_metadata_processor().process != nullptr) {
219
221
  // We're calling out to the application, so we need to make sure
220
222
  // to drop the call combiner early if we get cancelled.
223
+ // TODO(yashykt): We would not need this ref if call combiners used
224
+ // Closure::Run() instead of ExecCtx::Run()
225
+ GRPC_CALL_STACK_REF(calld->owning_call, "cancel_call");
221
226
  GRPC_CLOSURE_INIT(&calld->cancel_closure, cancel_call, elem,
222
227
  grpc_schedule_on_exec_ctx);
223
228
  calld->call_combiner->SetNotifyOnCancel(&calld->cancel_closure);
@@ -242,7 +247,8 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
242
247
  grpc_core::Closure::Run(DEBUG_LOCATION, closure, GRPC_ERROR_REF(error));
243
248
  }
244
249
 
245
- static void recv_trailing_metadata_ready(void* user_data, grpc_error* err) {
250
+ static void recv_trailing_metadata_ready(void* user_data,
251
+ grpc_error_handle err) {
246
252
  grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
247
253
  call_data* calld = static_cast<call_data*>(elem->call_data);
248
254
  if (calld->original_recv_initial_metadata_ready != nullptr) {
@@ -280,7 +286,7 @@ static void server_auth_start_transport_stream_op_batch(
280
286
  }
281
287
 
282
288
  /* Constructor for call_data */
283
- static grpc_error* server_auth_init_call_elem(
289
+ static grpc_error_handle server_auth_init_call_elem(
284
290
  grpc_call_element* elem, const grpc_call_element_args* args) {
285
291
  new (elem->call_data) call_data(elem, *args);
286
292
  return GRPC_ERROR_NONE;
@@ -295,16 +301,16 @@ static void server_auth_destroy_call_elem(
295
301
  }
296
302
 
297
303
  /* Constructor for channel_data */
298
- static grpc_error* server_auth_init_channel_elem(
304
+ static grpc_error_handle server_auth_init_channel_elem(
299
305
  grpc_channel_element* elem, grpc_channel_element_args* args) {
300
306
  GPR_ASSERT(!args->is_last);
301
307
  grpc_auth_context* auth_context =
302
308
  grpc_find_auth_context_in_args(args->channel_args);
303
309
  if (auth_context == nullptr) {
304
- grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
310
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
305
311
  "No authorization context found. This might be a TRANSIENT failure due "
306
312
  "to certificates not having been loaded yet.");
307
- gpr_log(GPR_DEBUG, "%s", grpc_error_string(error));
313
+ gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
308
314
  return error;
309
315
  }
310
316
  GPR_ASSERT(auth_context != nullptr);
@@ -20,7 +20,8 @@
20
20
 
21
21
  #include "src/core/lib/security/transport/tsi_error.h"
22
22
 
23
- grpc_error* grpc_set_tsi_error_result(grpc_error* error, tsi_result result) {
23
+ grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error,
24
+ tsi_result result) {
24
25
  return grpc_error_set_int(
25
26
  grpc_error_set_str(
26
27
  error, GRPC_ERROR_STR_TSI_ERROR,
@@ -24,6 +24,7 @@
24
24
  #include "src/core/lib/iomgr/error.h"
25
25
  #include "src/core/tsi/transport_security_interface.h"
26
26
 
27
- grpc_error* grpc_set_tsi_error_result(grpc_error* error, tsi_result result);
27
+ grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error,
28
+ tsi_result result);
28
29
 
29
30
  #endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H */
@@ -30,7 +30,7 @@
30
30
 
31
31
  const char* grpc_json_get_string_property(const grpc_core::Json& json,
32
32
  const char* prop_name,
33
- grpc_error** error) {
33
+ grpc_error_handle* error) {
34
34
  if (json.type() != grpc_core::Json::Type::OBJECT) {
35
35
  if (error != nullptr) {
36
36
  *error =
@@ -62,7 +62,7 @@ const char* grpc_json_get_string_property(const grpc_core::Json& json,
62
62
  bool grpc_copy_json_string_property(const grpc_core::Json& json,
63
63
  const char* prop_name,
64
64
  char** copied_value) {
65
- grpc_error* error = GRPC_ERROR_NONE;
65
+ grpc_error_handle error = GRPC_ERROR_NONE;
66
66
  const char* prop_value =
67
67
  grpc_json_get_string_property(json, prop_name, &error);
68
68
  GRPC_LOG_IF_ERROR("Could not copy JSON property", error);
@@ -35,7 +35,7 @@
35
35
  // Gets a child property from a json node.
36
36
  const char* grpc_json_get_string_property(const grpc_core::Json& json,
37
37
  const char* prop_name,
38
- grpc_error** error);
38
+ grpc_error_handle* error);
39
39
 
40
40
  // Copies the value of the json child property specified by prop_name.
41
41
  // Returns false if the property was not found.
@@ -290,14 +290,15 @@ static void execute_batch(grpc_call* call,
290
290
 
291
291
  static void cancel_with_status(grpc_call* c, grpc_status_code status,
292
292
  const char* description);
293
- static void cancel_with_error(grpc_call* c, grpc_error* error);
294
- static void destroy_call(void* call_stack, grpc_error* error);
295
- static void receiving_slice_ready(void* bctlp, grpc_error* error);
296
- static void set_final_status(grpc_call* call, grpc_error* error);
293
+ static void cancel_with_error(grpc_call* c, grpc_error_handle error);
294
+ static void destroy_call(void* call_stack, grpc_error_handle error);
295
+ static void receiving_slice_ready(void* bctlp, grpc_error_handle error);
296
+ static void set_final_status(grpc_call* call, grpc_error_handle error);
297
297
  static void process_data_after_md(batch_control* bctl);
298
298
  static void post_batch_completion(batch_control* bctl);
299
299
 
300
- static void add_init_error(grpc_error** composite, grpc_error* new_err) {
300
+ static void add_init_error(grpc_error_handle* composite,
301
+ grpc_error_handle new_err) {
301
302
  if (new_err == GRPC_ERROR_NONE) return;
302
303
  if (*composite == GRPC_ERROR_NONE) {
303
304
  *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
@@ -335,15 +336,15 @@ size_t grpc_call_get_initial_size_estimate() {
335
336
  sizeof(grpc_linked_mdelem) * ESTIMATED_MDELEM_COUNT;
336
337
  }
337
338
 
338
- grpc_error* grpc_call_create(const grpc_call_create_args* args,
339
- grpc_call** out_call) {
339
+ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
340
+ grpc_call** out_call) {
340
341
  GPR_TIMER_SCOPE("grpc_call_create", 0);
341
342
 
342
343
  GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
343
344
 
344
345
  grpc_core::Arena* arena;
345
346
  grpc_call* call;
346
- grpc_error* error = GRPC_ERROR_NONE;
347
+ grpc_error_handle error = GRPC_ERROR_NONE;
347
348
  grpc_channel_stack* channel_stack =
348
349
  grpc_channel_get_channel_stack(args->channel);
349
350
  size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
@@ -524,7 +525,7 @@ void grpc_call_internal_unref(grpc_call* c REF_ARG) {
524
525
  GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
525
526
  }
526
527
 
527
- static void release_call(void* call, grpc_error* /*error*/) {
528
+ static void release_call(void* call, grpc_error_handle /*error*/) {
528
529
  grpc_call* c = static_cast<grpc_call*>(call);
529
530
  grpc_channel* channel = c->channel;
530
531
  grpc_core::Arena* arena = c->arena;
@@ -533,7 +534,7 @@ static void release_call(void* call, grpc_error* /*error*/) {
533
534
  GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
534
535
  }
535
536
 
536
- static void destroy_call(void* call, grpc_error* /*error*/) {
537
+ static void destroy_call(void* call, grpc_error_handle /*error*/) {
537
538
  GPR_TIMER_SCOPE("destroy_call", 0);
538
539
  size_t i;
539
540
  int ii;
@@ -559,8 +560,8 @@ static void destroy_call(void* call, grpc_error* /*error*/) {
559
560
  GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
560
561
  }
561
562
 
562
- grpc_error* status_error =
563
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&c->status_error));
563
+ grpc_error_handle status_error =
564
+ reinterpret_cast<grpc_error_handle>(gpr_atm_acq_load(&c->status_error));
564
565
  grpc_error_get_status(status_error, c->send_deadline,
565
566
  &c->final_info.final_status, nullptr, nullptr,
566
567
  &(c->final_info.error_string));
@@ -610,11 +611,8 @@ void grpc_call_unref(grpc_call* c) {
610
611
  // Unset the call combiner cancellation closure. This has the
611
612
  // effect of scheduling the previously set cancellation closure, if
612
613
  // any, so that it can release any internal references it may be
613
- // holding to the call stack. Also flush the closures on exec_ctx so that
614
- // filters that schedule cancel notification closures on exec_ctx do not
615
- // need to take a ref of the call stack to guarantee closure liveness.
614
+ // holding to the call stack.
616
615
  c->call_combiner.SetNotifyOnCancel(nullptr);
617
- grpc_core::ExecCtx::Get()->Flush();
618
616
  }
619
617
  GRPC_CALL_INTERNAL_UNREF(c, "destroy");
620
618
  }
@@ -630,7 +628,8 @@ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
630
628
 
631
629
  // This is called via the call combiner to start sending a batch down
632
630
  // the filter stack.
633
- static void execute_batch_in_call_combiner(void* arg, grpc_error* /*ignored*/) {
631
+ static void execute_batch_in_call_combiner(void* arg,
632
+ grpc_error_handle /*ignored*/) {
634
633
  GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
635
634
  grpc_transport_stream_op_batch* batch =
636
635
  static_cast<grpc_transport_stream_op_batch*>(arg);
@@ -691,7 +690,7 @@ struct cancel_state {
691
690
  };
692
691
  // The on_complete callback used when sending a cancel_stream batch down
693
692
  // the filter stack. Yields the call combiner when the batch is done.
694
- static void done_termination(void* arg, grpc_error* /*error*/) {
693
+ static void done_termination(void* arg, grpc_error_handle /*error*/) {
695
694
  cancel_state* state = static_cast<cancel_state*>(arg);
696
695
  GRPC_CALL_COMBINER_STOP(&state->call->call_combiner,
697
696
  "on_complete for cancel_stream op");
@@ -699,7 +698,7 @@ static void done_termination(void* arg, grpc_error* /*error*/) {
699
698
  gpr_free(state);
700
699
  }
701
700
 
702
- static void cancel_with_error(grpc_call* c, grpc_error* error) {
701
+ static void cancel_with_error(grpc_call* c, grpc_error_handle error) {
703
702
  if (!gpr_atm_rel_cas(&c->cancelled_with_error, 0, 1)) {
704
703
  GRPC_ERROR_UNREF(error);
705
704
  return;
@@ -725,8 +724,8 @@ void grpc_call_cancel_internal(grpc_call* call) {
725
724
  cancel_with_error(call, GRPC_ERROR_CANCELLED);
726
725
  }
727
726
 
728
- static grpc_error* error_from_status(grpc_status_code status,
729
- const char* description) {
727
+ static grpc_error_handle error_from_status(grpc_status_code status,
728
+ const char* description) {
730
729
  // copying 'description' is needed to ensure the grpc_call_cancel_with_status
731
730
  // guarantee that can be short-lived.
732
731
  return grpc_error_set_int(
@@ -741,10 +740,10 @@ static void cancel_with_status(grpc_call* c, grpc_status_code status,
741
740
  cancel_with_error(c, error_from_status(status, description));
742
741
  }
743
742
 
744
- static void set_final_status(grpc_call* call, grpc_error* error) {
743
+ static void set_final_status(grpc_call* call, grpc_error_handle error) {
745
744
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
746
745
  gpr_log(GPR_DEBUG, "set_final_status %s", call->is_client ? "CLI" : "SVR");
747
- gpr_log(GPR_DEBUG, "%s", grpc_error_string(error));
746
+ gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
748
747
  }
749
748
  if (call->is_client) {
750
749
  grpc_error_get_status(error, call->send_deadline,
@@ -770,7 +769,7 @@ static void set_final_status(grpc_call* call, grpc_error* error) {
770
769
  call->final_op.server.core_server->channelz_node();
771
770
  if (channelz_node != nullptr) {
772
771
  if (*call->final_op.server.cancelled ||
773
- reinterpret_cast<grpc_error*>(
772
+ reinterpret_cast<grpc_error_handle>(
774
773
  gpr_atm_acq_load(&call->status_error)) != GRPC_ERROR_NONE) {
775
774
  channelz_node->RecordCallFailed();
776
775
  } else {
@@ -952,7 +951,7 @@ static int prepare_application_metadata(grpc_call* call, int count,
952
951
  for (i = 0; i < total_count; i++) {
953
952
  grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
954
953
  grpc_linked_mdelem* l = linked_from_md(md);
955
- grpc_error* error = grpc_metadata_batch_link_tail(batch, l);
954
+ grpc_error_handle error = grpc_metadata_batch_link_tail(batch, l);
956
955
  if (error != GRPC_ERROR_NONE) {
957
956
  GRPC_MDELEM_UNREF(l->md);
958
957
  }
@@ -1053,14 +1052,14 @@ static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
1053
1052
  }
1054
1053
 
1055
1054
  static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
1056
- grpc_error* batch_error) {
1055
+ grpc_error_handle batch_error) {
1057
1056
  grpc_call* call = static_cast<grpc_call*>(args);
1058
1057
  if (batch_error != GRPC_ERROR_NONE) {
1059
1058
  set_final_status(call, batch_error);
1060
1059
  } else if (b->idx.named.grpc_status != nullptr) {
1061
1060
  grpc_status_code status_code =
1062
1061
  grpc_get_status_code_from_metadata(b->idx.named.grpc_status->md);
1063
- grpc_error* error = GRPC_ERROR_NONE;
1062
+ grpc_error_handle error = GRPC_ERROR_NONE;
1064
1063
  if (status_code != GRPC_STATUS_OK) {
1065
1064
  char* peer = grpc_call_get_peer(call);
1066
1065
  error = grpc_error_set_int(
@@ -1171,8 +1170,8 @@ static void finish_batch_completion(void* user_data,
1171
1170
  }
1172
1171
 
1173
1172
  static void reset_batch_errors(batch_control* bctl) {
1174
- GRPC_ERROR_UNREF(
1175
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1173
+ GRPC_ERROR_UNREF(reinterpret_cast<grpc_error_handle>(
1174
+ gpr_atm_acq_load(&bctl->batch_error)));
1176
1175
  gpr_atm_rel_store(&bctl->batch_error,
1177
1176
  reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE));
1178
1177
  }
@@ -1180,8 +1179,8 @@ static void reset_batch_errors(batch_control* bctl) {
1180
1179
  static void post_batch_completion(batch_control* bctl) {
1181
1180
  grpc_call* next_child_call;
1182
1181
  grpc_call* call = bctl->call;
1183
- grpc_error* error = GRPC_ERROR_REF(
1184
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1182
+ grpc_error_handle error = GRPC_ERROR_REF(reinterpret_cast<grpc_error_handle>(
1183
+ gpr_atm_acq_load(&bctl->batch_error)));
1185
1184
 
1186
1185
  if (bctl->op.send_initial_metadata) {
1187
1186
  grpc_metadata_batch_destroy(
@@ -1254,7 +1253,7 @@ static void finish_batch_step(batch_control* bctl) {
1254
1253
  }
1255
1254
 
1256
1255
  static void continue_receiving_slices(batch_control* bctl) {
1257
- grpc_error* error;
1256
+ grpc_error_handle error;
1258
1257
  grpc_call* call = bctl->call;
1259
1258
  for (;;) {
1260
1259
  size_t remaining = call->receiving_stream->length() -
@@ -1285,7 +1284,7 @@ static void continue_receiving_slices(batch_control* bctl) {
1285
1284
  }
1286
1285
  }
1287
1286
 
1288
- static void receiving_slice_ready(void* bctlp, grpc_error* error) {
1287
+ static void receiving_slice_ready(void* bctlp, grpc_error_handle error) {
1289
1288
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1290
1289
  grpc_call* call = bctl->call;
1291
1290
  bool release_error = false;
@@ -1345,13 +1344,13 @@ static void process_data_after_md(batch_control* bctl) {
1345
1344
  }
1346
1345
  }
1347
1346
 
1348
- static void receiving_stream_ready(void* bctlp, grpc_error* error) {
1347
+ static void receiving_stream_ready(void* bctlp, grpc_error_handle error) {
1349
1348
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1350
1349
  grpc_call* call = bctl->call;
1351
1350
  if (error != GRPC_ERROR_NONE) {
1352
1351
  call->receiving_stream.reset();
1353
- if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1354
- GRPC_ERROR_NONE) {
1352
+ if (reinterpret_cast<grpc_error_handle>(
1353
+ gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) {
1355
1354
  gpr_atm_rel_store(&bctl->batch_error,
1356
1355
  reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1357
1356
  }
@@ -1371,7 +1370,7 @@ static void receiving_stream_ready(void* bctlp, grpc_error* error) {
1371
1370
  // a recv_message op down the filter stack. Yields the call combiner
1372
1371
  // before processing the received message.
1373
1372
  static void receiving_stream_ready_in_call_combiner(void* bctlp,
1374
- grpc_error* error) {
1373
+ grpc_error_handle error) {
1375
1374
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1376
1375
  grpc_call* call = bctl->call;
1377
1376
  GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
@@ -1464,7 +1463,8 @@ static void validate_filtered_metadata(batch_control* bctl) {
1464
1463
  }
1465
1464
  }
1466
1465
 
1467
- static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1466
+ static void receiving_initial_metadata_ready(void* bctlp,
1467
+ grpc_error_handle error) {
1468
1468
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1469
1469
  grpc_call* call = bctl->call;
1470
1470
 
@@ -1483,8 +1483,8 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1483
1483
  call->send_deadline = md->deadline;
1484
1484
  }
1485
1485
  } else {
1486
- if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1487
- GRPC_ERROR_NONE) {
1486
+ if (reinterpret_cast<grpc_error_handle>(
1487
+ gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) {
1488
1488
  gpr_atm_rel_store(&bctl->batch_error,
1489
1489
  reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1490
1490
  }
@@ -1523,7 +1523,8 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1523
1523
  finish_batch_step(bctl);
1524
1524
  }
1525
1525
 
1526
- static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) {
1526
+ static void receiving_trailing_metadata_ready(void* bctlp,
1527
+ grpc_error_handle error) {
1527
1528
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1528
1529
  grpc_call* call = bctl->call;
1529
1530
  GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready");
@@ -1533,12 +1534,12 @@ static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) {
1533
1534
  finish_batch_step(bctl);
1534
1535
  }
1535
1536
 
1536
- static void finish_batch(void* bctlp, grpc_error* error) {
1537
+ static void finish_batch(void* bctlp, grpc_error_handle error) {
1537
1538
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1538
1539
  grpc_call* call = bctl->call;
1539
1540
  GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
1540
- if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1541
- GRPC_ERROR_NONE) {
1541
+ if (reinterpret_cast<grpc_error_handle>(
1542
+ gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) {
1542
1543
  gpr_atm_rel_store(&bctl->batch_error,
1543
1544
  reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1544
1545
  }
@@ -1755,7 +1756,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1755
1756
  call->send_extra_metadata_count = 1;
1756
1757
  call->send_extra_metadata[0].md = grpc_get_reffed_status_elem(
1757
1758
  op->data.send_status_from_server.status);
1758
- grpc_error* status_error =
1759
+ grpc_error_handle status_error =
1759
1760
  op->data.send_status_from_server.status == GRPC_STATUS_OK
1760
1761
  ? GRPC_ERROR_NONE
1761
1762
  : grpc_error_set_int(
@@ -55,8 +55,8 @@ typedef struct grpc_call_create_args {
55
55
  /* Create a new call based on \a args.
56
56
  Regardless of success or failure, always returns a valid new call into *call
57
57
  */
58
- grpc_error* grpc_call_create(const grpc_call_create_args* args,
59
- grpc_call** call);
58
+ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
59
+ grpc_call** call);
60
60
 
61
61
  void grpc_call_set_completion_queue(grpc_call* call, grpc_completion_queue* cq);
62
62