grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  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/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -27,6 +27,7 @@
27
27
  #include <memory>
28
28
 
29
29
  #include "absl/base/thread_annotations.h"
30
+ #include "absl/status/status.h"
30
31
  #include "absl/strings/str_cat.h"
31
32
  #include "absl/strings/string_view.h"
32
33
  #include "absl/types/optional.h"
@@ -54,8 +55,7 @@
54
55
  #include "src/core/lib/resource_quota/resource_quota.h"
55
56
  #include "src/core/lib/resource_quota/trace.h"
56
57
  #include "src/core/lib/security/transport/tsi_error.h"
57
- #include "src/core/lib/slice/slice_internal.h"
58
- #include "src/core/lib/slice/slice_refcount.h"
58
+ #include "src/core/lib/slice/slice.h"
59
59
  #include "src/core/lib/slice/slice_string_helpers.h"
60
60
  #include "src/core/tsi/transport_security_grpc.h"
61
61
  #include "src/core/tsi/transport_security_interface.h"
@@ -82,7 +82,7 @@ struct secure_endpoint {
82
82
  grpc_slice_buffer_init(&leftover_bytes);
83
83
  for (size_t i = 0; i < leftover_nslices; i++) {
84
84
  grpc_slice_buffer_add(&leftover_bytes,
85
- grpc_slice_ref_internal(leftover_slices[i]));
85
+ grpc_core::CSliceRef(leftover_slices[i]));
86
86
  }
87
87
  grpc_slice_buffer_init(&output_buffer);
88
88
  memory_owner =
@@ -110,12 +110,12 @@ struct secure_endpoint {
110
110
  grpc_endpoint_destroy(wrapped_ep);
111
111
  tsi_frame_protector_destroy(protector);
112
112
  tsi_zero_copy_grpc_protector_destroy(zero_copy_protector);
113
- grpc_slice_buffer_destroy_internal(&source_buffer);
114
- grpc_slice_buffer_destroy_internal(&leftover_bytes);
115
- grpc_slice_unref_internal(read_staging_buffer);
116
- grpc_slice_unref_internal(write_staging_buffer);
117
- grpc_slice_buffer_destroy_internal(&output_buffer);
118
- grpc_slice_buffer_destroy_internal(&protector_staging_buffer);
113
+ grpc_slice_buffer_destroy(&source_buffer);
114
+ grpc_slice_buffer_destroy(&leftover_bytes);
115
+ grpc_core::CSliceUnref(read_staging_buffer);
116
+ grpc_core::CSliceUnref(write_staging_buffer);
117
+ grpc_slice_buffer_destroy(&output_buffer);
118
+ grpc_slice_buffer_destroy(&protector_staging_buffer);
119
119
  gpr_mu_destroy(&protector_mu);
120
120
  }
121
121
 
@@ -216,8 +216,8 @@ static void maybe_post_reclaimer(secure_endpoint* ep) {
216
216
  ep->write_staging_buffer = grpc_empty_slice();
217
217
  ep->write_mu.Unlock();
218
218
 
219
- grpc_slice_unref_internal(temp_read_slice);
220
- grpc_slice_unref_internal(temp_write_slice);
219
+ grpc_core::CSliceUnref(temp_read_slice);
220
+ grpc_core::CSliceUnref(temp_write_slice);
221
221
  ep->has_posted_reclaimer.exchange(false, std::memory_order_relaxed);
222
222
  }
223
223
  SECURE_ENDPOINT_UNREF(ep, "benign_reclaimer");
@@ -261,10 +261,10 @@ static void on_read(void* user_data, grpc_error_handle error) {
261
261
  uint8_t* cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
262
262
  uint8_t* end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
263
263
 
264
- if (!GRPC_ERROR_IS_NONE(error)) {
265
- grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer);
266
- call_read_cb(ep, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
267
- "Secure read failed", &error, 1));
264
+ if (!error.ok()) {
265
+ grpc_slice_buffer_reset_and_unref(ep->read_buffer);
266
+ call_read_cb(
267
+ ep, GRPC_ERROR_CREATE_REFERENCING("Secure read failed", &error, 1));
268
268
  return;
269
269
  }
270
270
 
@@ -338,17 +338,16 @@ static void on_read(void* user_data, grpc_error_handle error) {
338
338
 
339
339
  /* TODO(yangg) experiment with moving this block after read_cb to see if it
340
340
  helps latency */
341
- grpc_slice_buffer_reset_and_unref_internal(&ep->source_buffer);
341
+ grpc_slice_buffer_reset_and_unref(&ep->source_buffer);
342
342
 
343
343
  if (result != TSI_OK) {
344
- grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer);
345
- call_read_cb(
346
- ep, grpc_set_tsi_error_result(
347
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unwrap failed"), result));
344
+ grpc_slice_buffer_reset_and_unref(ep->read_buffer);
345
+ call_read_cb(ep, grpc_set_tsi_error_result(
346
+ GRPC_ERROR_CREATE("Unwrap failed"), result));
348
347
  return;
349
348
  }
350
349
 
351
- call_read_cb(ep, GRPC_ERROR_NONE);
350
+ call_read_cb(ep, absl::OkStatus());
352
351
  }
353
352
 
354
353
  static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
@@ -357,13 +356,13 @@ static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
357
356
  secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
358
357
  ep->read_cb = cb;
359
358
  ep->read_buffer = slices;
360
- grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer);
359
+ grpc_slice_buffer_reset_and_unref(ep->read_buffer);
361
360
 
362
361
  SECURE_ENDPOINT_REF(ep, "read");
363
362
  if (ep->leftover_bytes.count) {
364
363
  grpc_slice_buffer_swap(&ep->leftover_bytes, &ep->source_buffer);
365
364
  GPR_ASSERT(ep->leftover_bytes.count == 0);
366
- on_read(ep, GRPC_ERROR_NONE);
365
+ on_read(ep, absl::OkStatus());
367
366
  return;
368
367
  }
369
368
 
@@ -393,7 +392,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
393
392
  uint8_t* cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
394
393
  uint8_t* end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
395
394
 
396
- grpc_slice_buffer_reset_and_unref_internal(&ep->output_buffer);
395
+ grpc_slice_buffer_reset_and_unref(&ep->output_buffer);
397
396
 
398
397
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_secure_endpoint)) {
399
398
  for (i = 0; i < slices->count; i++) {
@@ -424,7 +423,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
424
423
  result = tsi_zero_copy_grpc_protector_protect(
425
424
  ep->zero_copy_protector, slices, &ep->output_buffer);
426
425
  }
427
- grpc_slice_buffer_reset_and_unref_internal(&ep->protector_staging_buffer);
426
+ grpc_slice_buffer_reset_and_unref(&ep->protector_staging_buffer);
428
427
  } else {
429
428
  // Use frame protector to protect.
430
429
  for (i = 0; i < slices->count; i++) {
@@ -483,11 +482,10 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
483
482
 
484
483
  if (result != TSI_OK) {
485
484
  /* TODO(yangg) do different things according to the error type? */
486
- grpc_slice_buffer_reset_and_unref_internal(&ep->output_buffer);
485
+ grpc_slice_buffer_reset_and_unref(&ep->output_buffer);
487
486
  grpc_core::ExecCtx::Run(
488
487
  DEBUG_LOCATION, cb,
489
- grpc_set_tsi_error_result(
490
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Wrap failed"), result));
488
+ grpc_set_tsi_error_result(GRPC_ERROR_CREATE("Wrap failed"), result));
491
489
  return;
492
490
  }
493
491
 
@@ -29,7 +29,7 @@
29
29
  #include <string>
30
30
 
31
31
  #include "absl/base/attributes.h"
32
- #include "absl/memory/memory.h"
32
+ #include "absl/status/status.h"
33
33
  #include "absl/strings/str_cat.h"
34
34
  #include "absl/strings/string_view.h"
35
35
  #include "absl/types/optional.h"
@@ -46,6 +46,7 @@
46
46
  #include "src/core/lib/config/core_configuration.h"
47
47
  #include "src/core/lib/gprpp/debug_location.h"
48
48
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
49
+ #include "src/core/lib/gprpp/status_helper.h"
49
50
  #include "src/core/lib/gprpp/sync.h"
50
51
  #include "src/core/lib/gprpp/unique_type_name.h"
51
52
  #include "src/core/lib/iomgr/closure.h"
@@ -57,8 +58,8 @@
57
58
  #include "src/core/lib/security/context/security_context.h"
58
59
  #include "src/core/lib/security/transport/secure_endpoint.h"
59
60
  #include "src/core/lib/security/transport/tsi_error.h"
61
+ #include "src/core/lib/slice/slice.h"
60
62
  #include "src/core/lib/slice/slice_internal.h"
61
- #include "src/core/lib/slice/slice_refcount.h"
62
63
  #include "src/core/lib/transport/handshaker.h"
63
64
  #include "src/core/lib/transport/handshaker_factory.h"
64
65
  #include "src/core/lib/transport/handshaker_registry.h"
@@ -156,11 +157,11 @@ SecurityHandshaker::~SecurityHandshaker() {
156
157
  grpc_endpoint_destroy(endpoint_to_destroy_);
157
158
  }
158
159
  if (read_buffer_to_destroy_ != nullptr) {
159
- grpc_slice_buffer_destroy_internal(read_buffer_to_destroy_);
160
+ grpc_slice_buffer_destroy(read_buffer_to_destroy_);
160
161
  gpr_free(read_buffer_to_destroy_);
161
162
  }
162
163
  gpr_free(handshake_buffer_);
163
- grpc_slice_buffer_destroy_internal(&outgoing_);
164
+ grpc_slice_buffer_destroy(&outgoing_);
164
165
  auth_context_.reset(DEBUG_LOCATION, "handshake");
165
166
  connector_.reset(DEBUG_LOCATION, "handshake");
166
167
  }
@@ -196,20 +197,20 @@ void SecurityHandshaker::CleanupArgsForFailureLocked() {
196
197
  // If the handshake failed or we're shutting down, clean up and invoke the
197
198
  // callback with the error.
198
199
  void SecurityHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
199
- if (GRPC_ERROR_IS_NONE(error)) {
200
+ if (error.ok()) {
200
201
  // If we were shut down after the handshake succeeded but before an
201
202
  // endpoint callback was invoked, we need to generate our own error.
202
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
203
+ error = GRPC_ERROR_CREATE("Handshaker shutdown");
203
204
  }
204
205
  gpr_log(GPR_DEBUG, "Security handshake failed: %s",
205
- grpc_error_std_string(error).c_str());
206
+ StatusToString(error).c_str());
206
207
  if (!is_shutdown_) {
207
208
  tsi_handshaker_shutdown(handshaker_);
208
209
  // TODO(ctiller): It is currently necessary to shutdown endpoints
209
210
  // before destroying them, even if we know that there are no
210
211
  // pending read/write callbacks. This should be fixed, at which
211
212
  // point this can be removed.
212
- grpc_endpoint_shutdown(args_->endpoint, GRPC_ERROR_REF(error));
213
+ grpc_endpoint_shutdown(args_->endpoint, error);
213
214
  // Not shutting down, so the write failed. Clean up before
214
215
  // invoking the callback.
215
216
  CleanupArgsForFailureLocked();
@@ -248,7 +249,7 @@ MakeChannelzSecurityFromAuthContext(grpc_auth_context* auth_context) {
248
249
 
249
250
  void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
250
251
  MutexLock lock(&mu_);
251
- if (!GRPC_ERROR_IS_NONE(error) || is_shutdown_) {
252
+ if (!error.ok() || is_shutdown_) {
252
253
  HandshakeFailedLocked(error);
253
254
  return;
254
255
  }
@@ -259,7 +260,7 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
259
260
  handshaker_result_, &unused_bytes, &unused_bytes_size);
260
261
  if (result != TSI_OK) {
261
262
  HandshakeFailedLocked(grpc_set_tsi_error_result(
262
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
263
+ GRPC_ERROR_CREATE(
263
264
  "TSI handshaker result does not provide unused bytes"),
264
265
  result));
265
266
  return;
@@ -270,9 +271,8 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
270
271
  handshaker_result_, &frame_protector_type);
271
272
  if (result != TSI_OK) {
272
273
  HandshakeFailedLocked(grpc_set_tsi_error_result(
273
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
274
- "TSI handshaker result does not implement "
275
- "get_frame_protector_type"),
274
+ GRPC_ERROR_CREATE("TSI handshaker result does not implement "
275
+ "get_frame_protector_type"),
276
276
  result));
277
277
  return;
278
278
  }
@@ -288,8 +288,7 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
288
288
  &zero_copy_protector);
289
289
  if (result != TSI_OK) {
290
290
  HandshakeFailedLocked(grpc_set_tsi_error_result(
291
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
292
- "Zero-copy frame protector creation failed"),
291
+ GRPC_ERROR_CREATE("Zero-copy frame protector creation failed"),
293
292
  result));
294
293
  return;
295
294
  }
@@ -300,10 +299,8 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
300
299
  handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
301
300
  &protector);
302
301
  if (result != TSI_OK) {
303
- HandshakeFailedLocked(
304
- grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
305
- "Frame protector creation failed"),
306
- result));
302
+ HandshakeFailedLocked(grpc_set_tsi_error_result(
303
+ GRPC_ERROR_CREATE("Frame protector creation failed"), result));
307
304
  return;
308
305
  }
309
306
  break;
@@ -320,7 +317,7 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
320
317
  args_->endpoint = grpc_secure_endpoint_create(
321
318
  protector, zero_copy_protector, args_->endpoint, &slice,
322
319
  args_->args.ToC().get(), 1);
323
- grpc_slice_unref_internal(slice);
320
+ CSliceUnref(slice);
324
321
  } else {
325
322
  args_->endpoint = grpc_secure_endpoint_create(
326
323
  protector, zero_copy_protector, args_->endpoint, nullptr,
@@ -342,7 +339,7 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
342
339
  MakeChannelzSecurityFromAuthContext(auth_context_.get()));
343
340
  }
344
341
  // Invoke callback.
345
- ExecCtx::Run(DEBUG_LOCATION, on_handshake_done_, GRPC_ERROR_NONE);
342
+ ExecCtx::Run(DEBUG_LOCATION, on_handshake_done_, absl::OkStatus());
346
343
  // Set shutdown to true so that subsequent calls to
347
344
  // security_handshaker_shutdown() do nothing.
348
345
  is_shutdown_ = true;
@@ -350,7 +347,7 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
350
347
 
351
348
  void SecurityHandshaker::OnPeerCheckedFn(void* arg, grpc_error_handle error) {
352
349
  RefCountedPtr<SecurityHandshaker>(static_cast<SecurityHandshaker*>(arg))
353
- ->OnPeerCheckedInner(GRPC_ERROR_REF(error));
350
+ ->OnPeerCheckedInner(error);
354
351
  }
355
352
 
356
353
  grpc_error_handle SecurityHandshaker::CheckPeerLocked() {
@@ -359,20 +356,20 @@ grpc_error_handle SecurityHandshaker::CheckPeerLocked() {
359
356
  tsi_handshaker_result_extract_peer(handshaker_result_, &peer);
360
357
  if (result != TSI_OK) {
361
358
  return grpc_set_tsi_error_result(
362
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Peer extraction failed"), result);
359
+ GRPC_ERROR_CREATE("Peer extraction failed"), result);
363
360
  }
364
361
  connector_->check_peer(peer, args_->endpoint, args_->args, &auth_context_,
365
362
  &on_peer_checked_);
366
- return GRPC_ERROR_NONE;
363
+ return absl::OkStatus();
367
364
  }
368
365
 
369
366
  grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
370
367
  tsi_result result, const unsigned char* bytes_to_send,
371
368
  size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result) {
372
- grpc_error_handle error = GRPC_ERROR_NONE;
369
+ grpc_error_handle error;
373
370
  // Handshaker was shutdown.
374
371
  if (is_shutdown_) {
375
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
372
+ return GRPC_ERROR_CREATE("Handshaker shutdown");
376
373
  }
377
374
  // Read more if we need to.
378
375
  if (result == TSI_INCOMPLETE_DATA) {
@@ -393,7 +390,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
393
390
  connector_type = security_connector->type().name();
394
391
  }
395
392
  return grpc_set_tsi_error_result(
396
- GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
393
+ GRPC_ERROR_CREATE(absl::StrCat(
397
394
  connector_type, " handshake failed",
398
395
  (tsi_handshake_error_.empty() ? "" : ": "), tsi_handshake_error_)),
399
396
  result);
@@ -407,7 +404,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
407
404
  // Send data to peer, if needed.
408
405
  grpc_slice to_send = grpc_slice_from_copied_buffer(
409
406
  reinterpret_cast<const char*>(bytes_to_send), bytes_to_send_size);
410
- grpc_slice_buffer_reset_and_unref_internal(&outgoing_);
407
+ grpc_slice_buffer_reset_and_unref(&outgoing_);
411
408
  grpc_slice_buffer_add(&outgoing_, to_send);
412
409
  grpc_endpoint_write(
413
410
  args_->endpoint, &outgoing_,
@@ -440,7 +437,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper(
440
437
  MutexLock lock(&h->mu_);
441
438
  grpc_error_handle error = h->OnHandshakeNextDoneLocked(
442
439
  result, bytes_to_send, bytes_to_send_size, handshaker_result);
443
- if (!GRPC_ERROR_IS_NONE(error)) {
440
+ if (!error.ok()) {
444
441
  h->HandshakeFailedLocked(error);
445
442
  } else {
446
443
  h.release(); // Avoid unref
@@ -460,7 +457,7 @@ grpc_error_handle SecurityHandshaker::DoHandshakerNextLocked(
460
457
  if (result == TSI_ASYNC) {
461
458
  // Handshaker operating asynchronously. Nothing else to do here;
462
459
  // callback will be invoked in a TSI thread.
463
- return GRPC_ERROR_NONE;
460
+ return absl::OkStatus();
464
461
  }
465
462
  // Handshaker returned synchronously. Invoke callback directly in
466
463
  // this thread with our existing exec_ctx.
@@ -478,23 +475,23 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler(
478
475
  GRPC_CLOSURE_INIT(&h->on_handshake_data_received_from_peer_,
479
476
  &SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn,
480
477
  h, grpc_schedule_on_exec_ctx),
481
- GRPC_ERROR_REF(error));
478
+ error);
482
479
  }
483
480
 
484
481
  void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
485
482
  void* arg, grpc_error_handle error) {
486
483
  RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
487
484
  MutexLock lock(&h->mu_);
488
- if (!GRPC_ERROR_IS_NONE(error) || h->is_shutdown_) {
489
- h->HandshakeFailedLocked(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
490
- "Handshake read failed", &error, 1));
485
+ if (!error.ok() || h->is_shutdown_) {
486
+ h->HandshakeFailedLocked(
487
+ GRPC_ERROR_CREATE_REFERENCING("Handshake read failed", &error, 1));
491
488
  return;
492
489
  }
493
490
  // Copy all slices received.
494
491
  size_t bytes_received_size = h->MoveReadBufferIntoHandshakeBuffer();
495
492
  // Call TSI handshaker.
496
493
  error = h->DoHandshakerNextLocked(h->handshake_buffer_, bytes_received_size);
497
- if (!GRPC_ERROR_IS_NONE(error)) {
494
+ if (!error.ok()) {
498
495
  h->HandshakeFailedLocked(error);
499
496
  } else {
500
497
  h.release(); // Avoid unref
@@ -511,16 +508,16 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler(
511
508
  GRPC_CLOSURE_INIT(&h->on_handshake_data_sent_to_peer_,
512
509
  &SecurityHandshaker::OnHandshakeDataSentToPeerFn, h,
513
510
  grpc_schedule_on_exec_ctx),
514
- GRPC_ERROR_REF(error));
511
+ error);
515
512
  }
516
513
 
517
514
  void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
518
515
  grpc_error_handle error) {
519
516
  RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
520
517
  MutexLock lock(&h->mu_);
521
- if (!GRPC_ERROR_IS_NONE(error) || h->is_shutdown_) {
522
- h->HandshakeFailedLocked(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
523
- "Handshake write failed", &error, 1));
518
+ if (!error.ok() || h->is_shutdown_) {
519
+ h->HandshakeFailedLocked(
520
+ GRPC_ERROR_CREATE_REFERENCING("Handshake write failed", &error, 1));
524
521
  return;
525
522
  }
526
523
  // We may be done.
@@ -534,7 +531,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
534
531
  /*urgent=*/true, /*min_progress_size=*/1);
535
532
  } else {
536
533
  error = h->CheckPeerLocked();
537
- if (!GRPC_ERROR_IS_NONE(error)) {
534
+ if (!error.ok()) {
538
535
  h->HandshakeFailedLocked(error);
539
536
  return;
540
537
  }
@@ -550,12 +547,11 @@ void SecurityHandshaker::Shutdown(grpc_error_handle why) {
550
547
  MutexLock lock(&mu_);
551
548
  if (!is_shutdown_) {
552
549
  is_shutdown_ = true;
553
- connector_->cancel_check_peer(&on_peer_checked_, GRPC_ERROR_REF(why));
550
+ connector_->cancel_check_peer(&on_peer_checked_, why);
554
551
  tsi_handshaker_shutdown(handshaker_);
555
- grpc_endpoint_shutdown(args_->endpoint, GRPC_ERROR_REF(why));
552
+ grpc_endpoint_shutdown(args_->endpoint, why);
556
553
  CleanupArgsForFailureLocked();
557
554
  }
558
- GRPC_ERROR_UNREF(why);
559
555
  }
560
556
 
561
557
  void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
@@ -568,7 +564,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
568
564
  size_t bytes_received_size = MoveReadBufferIntoHandshakeBuffer();
569
565
  grpc_error_handle error =
570
566
  DoHandshakerNextLocked(handshake_buffer_, bytes_received_size);
571
- if (!GRPC_ERROR_IS_NONE(error)) {
567
+ if (!error.ok()) {
572
568
  HandshakeFailedLocked(error);
573
569
  } else {
574
570
  ref.release(); // Avoid unref
@@ -582,17 +578,17 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
582
578
  class FailHandshaker : public Handshaker {
583
579
  public:
584
580
  const char* name() const override { return "security_fail"; }
585
- void Shutdown(grpc_error_handle why) override { GRPC_ERROR_UNREF(why); }
581
+ void Shutdown(grpc_error_handle /*why*/) override {}
586
582
  void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
587
583
  grpc_closure* on_handshake_done,
588
584
  HandshakerArgs* args) override {
589
- grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
590
- "Failed to create security handshaker");
591
- grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_REF(error));
585
+ grpc_error_handle error =
586
+ GRPC_ERROR_CREATE("Failed to create security handshaker");
587
+ grpc_endpoint_shutdown(args->endpoint, error);
592
588
  grpc_endpoint_destroy(args->endpoint);
593
589
  args->endpoint = nullptr;
594
590
  args->args = ChannelArgs();
595
- grpc_slice_buffer_destroy_internal(args->read_buffer);
591
+ grpc_slice_buffer_destroy(args->read_buffer);
596
592
  gpr_free(args->read_buffer);
597
593
  args->read_buffer = nullptr;
598
594
  ExecCtx::Run(DEBUG_LOCATION, on_handshake_done, error);
@@ -618,6 +614,9 @@ class ClientSecurityHandshakerFactory : public HandshakerFactory {
618
614
  handshake_mgr);
619
615
  }
620
616
  }
617
+ HandshakerPriority Priority() override {
618
+ return HandshakerPriority::kSecurityHandshakers;
619
+ }
621
620
  ~ClientSecurityHandshakerFactory() override = default;
622
621
  };
623
622
 
@@ -632,6 +631,9 @@ class ServerSecurityHandshakerFactory : public HandshakerFactory {
632
631
  handshake_mgr);
633
632
  }
634
633
  }
634
+ HandshakerPriority Priority() override {
635
+ return HandshakerPriority::kSecurityHandshakers;
636
+ }
635
637
  ~ServerSecurityHandshakerFactory() override = default;
636
638
  };
637
639
 
@@ -655,11 +657,9 @@ RefCountedPtr<Handshaker> SecurityHandshakerCreate(
655
657
 
656
658
  void SecurityRegisterHandshakerFactories(CoreConfiguration::Builder* builder) {
657
659
  builder->handshaker_registry()->RegisterHandshakerFactory(
658
- false /* at_start */, HANDSHAKER_CLIENT,
659
- absl::make_unique<ClientSecurityHandshakerFactory>());
660
+ HANDSHAKER_CLIENT, std::make_unique<ClientSecurityHandshakerFactory>());
660
661
  builder->handshaker_registry()->RegisterHandshakerFactory(
661
- false /* at_start */, HANDSHAKER_SERVER,
662
- absl::make_unique<ServerSecurityHandshakerFactory>());
662
+ HANDSHAKER_SERVER, std::make_unique<ServerSecurityHandshakerFactory>());
663
663
  }
664
664
 
665
665
  } // namespace grpc_core
@@ -23,6 +23,8 @@
23
23
  #include <algorithm>
24
24
  #include <new>
25
25
 
26
+ #include "absl/status/status.h"
27
+
26
28
  #include <grpc/grpc.h>
27
29
  #include <grpc/grpc_security.h>
28
30
  #include <grpc/impl/codegen/grpc_types.h>
@@ -37,6 +39,7 @@
37
39
  #include "src/core/lib/channel/context.h"
38
40
  #include "src/core/lib/gprpp/debug_location.h"
39
41
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
42
+ #include "src/core/lib/gprpp/status_helper.h"
40
43
  #include "src/core/lib/iomgr/call_combiner.h"
41
44
  #include "src/core/lib/iomgr/closure.h"
42
45
  #include "src/core/lib/iomgr/error.h"
@@ -46,7 +49,6 @@
46
49
  #include "src/core/lib/security/transport/auth_filters.h" // IWYU pragma: keep
47
50
  #include "src/core/lib/slice/slice.h"
48
51
  #include "src/core/lib/slice/slice_internal.h"
49
- #include "src/core/lib/slice/slice_refcount.h"
50
52
  #include "src/core/lib/transport/metadata_batch.h"
51
53
  #include "src/core/lib/transport/transport.h"
52
54
 
@@ -95,14 +97,14 @@ struct call_data {
95
97
  grpc_server_security_context_destroy;
96
98
  }
97
99
 
98
- ~call_data() { GRPC_ERROR_UNREF(recv_initial_metadata_error); }
100
+ ~call_data() {}
99
101
 
100
102
  grpc_core::CallCombiner* call_combiner;
101
103
  grpc_call_stack* owning_call;
102
104
  grpc_transport_stream_op_batch* recv_initial_metadata_batch;
103
105
  grpc_closure* original_recv_initial_metadata_ready;
104
106
  grpc_closure recv_initial_metadata_ready;
105
- grpc_error_handle recv_initial_metadata_error = GRPC_ERROR_NONE;
107
+ grpc_error_handle recv_initial_metadata_error;
106
108
  grpc_closure recv_trailing_metadata_ready;
107
109
  grpc_closure* original_recv_trailing_metadata_ready;
108
110
  grpc_error_handle recv_trailing_metadata_error;
@@ -171,13 +173,13 @@ static void on_md_processing_done_inner(grpc_call_element* elem,
171
173
  "response_md in auth metadata processing not supported for now. "
172
174
  "Ignoring...");
173
175
  }
174
- if (GRPC_ERROR_IS_NONE(error)) {
176
+ if (error.ok()) {
175
177
  for (size_t i = 0; i < num_consumed_md; i++) {
176
178
  batch->payload->recv_initial_metadata.recv_initial_metadata->Remove(
177
179
  grpc_core::StringViewFromSlice(consumed_md[i].key));
178
180
  }
179
181
  }
180
- calld->recv_initial_metadata_error = GRPC_ERROR_REF(error);
182
+ calld->recv_initial_metadata_error = error;
181
183
  grpc_closure* closure = calld->original_recv_initial_metadata_ready;
182
184
  calld->original_recv_initial_metadata_ready = nullptr;
183
185
  if (calld->seen_recv_trailing_metadata_ready) {
@@ -201,22 +203,22 @@ static void on_md_processing_done(
201
203
  // If the call was not cancelled while we were in flight, process the result.
202
204
  if (gpr_atm_full_cas(&calld->state, static_cast<gpr_atm>(STATE_INIT),
203
205
  static_cast<gpr_atm>(STATE_DONE))) {
204
- grpc_error_handle error = GRPC_ERROR_NONE;
206
+ grpc_error_handle error;
205
207
  if (status != GRPC_STATUS_OK) {
206
208
  if (error_details == nullptr) {
207
209
  error_details = "Authentication metadata processing failed.";
208
210
  }
209
- error = grpc_error_set_int(
210
- GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_details),
211
- GRPC_ERROR_INT_GRPC_STATUS, status);
211
+ error =
212
+ grpc_error_set_int(GRPC_ERROR_CREATE(error_details),
213
+ grpc_core::StatusIntProperty::kRpcStatus, status);
212
214
  }
213
215
  on_md_processing_done_inner(elem, consumed_md, num_consumed_md, response_md,
214
216
  num_response_md, error);
215
217
  }
216
218
  // Clean up.
217
219
  for (size_t i = 0; i < calld->md.count; i++) {
218
- grpc_slice_unref_internal(calld->md.metadata[i].key);
219
- grpc_slice_unref_internal(calld->md.metadata[i].value);
220
+ grpc_core::CSliceUnref(calld->md.metadata[i].key);
221
+ grpc_core::CSliceUnref(calld->md.metadata[i].value);
220
222
  }
221
223
  grpc_metadata_array_destroy(&calld->md);
222
224
  GRPC_CALL_STACK_UNREF(calld->owning_call, "server_auth_metadata");
@@ -226,11 +228,10 @@ static void cancel_call(void* arg, grpc_error_handle error) {
226
228
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
227
229
  call_data* calld = static_cast<call_data*>(elem->call_data);
228
230
  // If the result was not already processed, invoke the callback now.
229
- if (!GRPC_ERROR_IS_NONE(error) &&
231
+ if (!error.ok() &&
230
232
  gpr_atm_full_cas(&calld->state, static_cast<gpr_atm>(STATE_INIT),
231
233
  static_cast<gpr_atm>(STATE_CANCELLED))) {
232
- on_md_processing_done_inner(elem, nullptr, 0, nullptr, 0,
233
- GRPC_ERROR_REF(error));
234
+ on_md_processing_done_inner(elem, nullptr, 0, nullptr, 0, error);
234
235
  }
235
236
  GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_call");
236
237
  }
@@ -240,7 +241,7 @@ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
240
241
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
241
242
  call_data* calld = static_cast<call_data*>(elem->call_data);
242
243
  grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch;
243
- if (GRPC_ERROR_IS_NONE(error)) {
244
+ if (error.ok()) {
244
245
  if (chand->creds != nullptr &&
245
246
  chand->creds->auth_metadata_processor().process != nullptr) {
246
247
  // We're calling out to the application, so we need to make sure
@@ -269,7 +270,7 @@ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
269
270
  calld->recv_trailing_metadata_error,
270
271
  "continue recv_trailing_metadata_ready");
271
272
  }
272
- grpc_core::Closure::Run(DEBUG_LOCATION, closure, GRPC_ERROR_REF(error));
273
+ grpc_core::Closure::Run(DEBUG_LOCATION, closure, error);
273
274
  }
274
275
 
275
276
  static void recv_trailing_metadata_ready(void* user_data,
@@ -277,15 +278,14 @@ static void recv_trailing_metadata_ready(void* user_data,
277
278
  grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
278
279
  call_data* calld = static_cast<call_data*>(elem->call_data);
279
280
  if (calld->original_recv_initial_metadata_ready != nullptr) {
280
- calld->recv_trailing_metadata_error = GRPC_ERROR_REF(err);
281
+ calld->recv_trailing_metadata_error = err;
281
282
  calld->seen_recv_trailing_metadata_ready = true;
282
283
  GRPC_CALL_COMBINER_STOP(calld->call_combiner,
283
284
  "deferring recv_trailing_metadata_ready until "
284
285
  "after recv_initial_metadata_ready");
285
286
  return;
286
287
  }
287
- err = grpc_error_add_child(
288
- GRPC_ERROR_REF(err), GRPC_ERROR_REF(calld->recv_initial_metadata_error));
288
+ err = grpc_error_add_child(err, calld->recv_initial_metadata_error);
289
289
  grpc_core::Closure::Run(DEBUG_LOCATION,
290
290
  calld->original_recv_trailing_metadata_ready, err);
291
291
  }
@@ -314,7 +314,7 @@ static void server_auth_start_transport_stream_op_batch(
314
314
  static grpc_error_handle server_auth_init_call_elem(
315
315
  grpc_call_element* elem, const grpc_call_element_args* args) {
316
316
  new (elem->call_data) call_data(elem, *args);
317
- return GRPC_ERROR_NONE;
317
+ return absl::OkStatus();
318
318
  }
319
319
 
320
320
  /* Destructor for call_data */
@@ -335,7 +335,7 @@ static grpc_error_handle server_auth_init_channel_elem(
335
335
  grpc_server_credentials* creds =
336
336
  grpc_find_server_credentials_in_args(args->channel_args);
337
337
  new (elem->channel_data) channel_data(auth_context, creds);
338
- return GRPC_ERROR_NONE;
338
+ return absl::OkStatus();
339
339
  }
340
340
 
341
341
  /* Destructor for channel data */
@@ -20,9 +20,12 @@
20
20
 
21
21
  #include "src/core/lib/security/transport/tsi_error.h"
22
22
 
23
+ #include "src/core/lib/gprpp/status_helper.h"
24
+
23
25
  grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error,
24
26
  tsi_result result) {
25
- return grpc_error_set_int(grpc_error_set_str(error, GRPC_ERROR_STR_TSI_ERROR,
26
- tsi_result_to_string(result)),
27
- GRPC_ERROR_INT_TSI_CODE, result);
27
+ return grpc_error_set_int(
28
+ grpc_error_set_str(error, grpc_core::StatusStrProperty::kTsiError,
29
+ tsi_result_to_string(result)),
30
+ grpc_core::StatusIntProperty::kTsiCode, result);
28
31
  }