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
@@ -46,7 +46,9 @@
46
46
  #include "src/core/lib/debug/trace.h"
47
47
  #include "src/core/lib/gprpp/env.h"
48
48
  #include "src/core/lib/gprpp/host_port.h"
49
+ #include "src/core/lib/gprpp/orphanable.h"
49
50
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
51
+ #include "src/core/lib/gprpp/status_helper.h"
50
52
  #include "src/core/lib/gprpp/sync.h"
51
53
  #include "src/core/lib/gprpp/time.h"
52
54
  #include "src/core/lib/http/httpcli.h"
@@ -65,8 +67,8 @@
65
67
  #include "src/core/lib/security/credentials/jwt/json_token.h"
66
68
  #include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
67
69
  #include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
70
+ #include "src/core/lib/slice/slice.h"
68
71
  #include "src/core/lib/slice/slice_internal.h"
69
- #include "src/core/lib/slice/slice_refcount.h"
70
72
  #include "src/core/lib/surface/api_trace.h"
71
73
  #include "src/core/lib/transport/error_utils.h"
72
74
  #include "src/core/lib/uri/uri_parser.h"
@@ -171,7 +173,7 @@ static void on_metadata_server_detection_http_response(
171
173
  void* user_data, grpc_error_handle error) {
172
174
  metadata_server_detector* detector =
173
175
  static_cast<metadata_server_detector*>(user_data);
174
- if (GRPC_ERROR_IS_NONE(error) && detector->response.status == 200 &&
176
+ if (error.ok() && detector->response.status == 200 &&
175
177
  detector->response.hdr_count > 0) {
176
178
  /* Internet providers can return a generic response to all requests, so
177
179
  it is necessary to check that metadata header is present also. */
@@ -273,7 +275,12 @@ bool ValidateUrlField(const Json& json, const std::string& field) {
273
275
  absl::string_view host;
274
276
  absl::string_view port;
275
277
  grpc_core::SplitHostPort(url->authority(), &host, &port);
276
- if (absl::ConsumeSuffix(&host, ".googleapis.com")) {
278
+ if (absl::ConsumeSuffix(&host, ".p.googleapis.com")) {
279
+ if (absl::StartsWith(host, "sts-") ||
280
+ absl::StartsWith(host, "iamcredentials-")) {
281
+ return true;
282
+ }
283
+ } else if (absl::ConsumeSuffix(&host, ".googleapis.com")) {
277
284
  if (host == "sts" || host == "iamcredentials") {
278
285
  return true;
279
286
  } else if (absl::StartsWith(host, "sts.") ||
@@ -307,14 +314,14 @@ static grpc_error_handle create_default_creds_from_path(
307
314
  grpc_auth_refresh_token token;
308
315
  grpc_core::RefCountedPtr<grpc_call_credentials> result;
309
316
  grpc_slice creds_data = grpc_empty_slice();
310
- grpc_error_handle error = GRPC_ERROR_NONE;
317
+ grpc_error_handle error;
311
318
  Json json;
312
319
  if (creds_path.empty()) {
313
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("creds_path unset");
320
+ error = GRPC_ERROR_CREATE("creds_path unset");
314
321
  goto end;
315
322
  }
316
323
  error = grpc_load_file(creds_path.c_str(), 0, &creds_data);
317
- if (!GRPC_ERROR_IS_NONE(error)) goto end;
324
+ if (!error.ok()) goto end;
318
325
  {
319
326
  auto json_or = Json::Parse(grpc_core::StringViewFromSlice(creds_data));
320
327
  if (!json_or.ok()) {
@@ -324,9 +331,9 @@ static grpc_error_handle create_default_creds_from_path(
324
331
  json = std::move(*json_or);
325
332
  }
326
333
  if (json.type() != Json::Type::OBJECT) {
327
- error = grpc_error_set_str(
328
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to parse JSON"),
329
- GRPC_ERROR_STR_RAW_BYTES, grpc_core::StringViewFromSlice(creds_data));
334
+ error = grpc_error_set_str(GRPC_ERROR_CREATE("Failed to parse JSON"),
335
+ grpc_core::StatusStrProperty::kRawBytes,
336
+ grpc_core::StringViewFromSlice(creds_data));
330
337
  goto end;
331
338
  }
332
339
 
@@ -337,7 +344,7 @@ static grpc_error_handle create_default_creds_from_path(
337
344
  grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
338
345
  key, grpc_max_auth_token_lifetime());
339
346
  if (result == nullptr) {
340
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
347
+ error = GRPC_ERROR_CREATE(
341
348
  "grpc_service_account_jwt_access_credentials_create_from_auth_json_"
342
349
  "key failed");
343
350
  }
@@ -350,7 +357,7 @@ static grpc_error_handle create_default_creds_from_path(
350
357
  result =
351
358
  grpc_refresh_token_credentials_create_from_auth_refresh_token(token);
352
359
  if (result == nullptr) {
353
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
360
+ error = GRPC_ERROR_CREATE(
354
361
  "grpc_refresh_token_credentials_create_from_auth_refresh_token "
355
362
  "failed");
356
363
  }
@@ -359,15 +366,14 @@ static grpc_error_handle create_default_creds_from_path(
359
366
 
360
367
  /* Finally try an external account credentials.*/
361
368
  if (!ValidateExteralAccountCredentials(json)) {
362
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
363
- "Invalid external account credentials format.");
369
+ error = GRPC_ERROR_CREATE("Invalid external account credentials format.");
364
370
  goto end;
365
371
  }
366
372
  result = grpc_core::ExternalAccountCredentials::Create(json, {}, &error);
367
373
 
368
374
  end:
369
- GPR_ASSERT((result == nullptr) + (GRPC_ERROR_IS_NONE(error)) == 1);
370
- grpc_slice_unref_internal(creds_data);
375
+ GPR_ASSERT((result == nullptr) + (error.ok()) == 1);
376
+ grpc_core::CSliceUnref(creds_data);
371
377
  *creds = result;
372
378
  return error;
373
379
  }
@@ -402,14 +408,14 @@ static grpc_core::RefCountedPtr<grpc_call_credentials> make_default_call_creds(
402
408
  auto path_from_env = grpc_core::GetEnv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR);
403
409
  if (path_from_env.has_value()) {
404
410
  err = create_default_creds_from_path(*path_from_env, &call_creds);
405
- if (GRPC_ERROR_IS_NONE(err)) return call_creds;
411
+ if (err.ok()) return call_creds;
406
412
  *error = grpc_error_add_child(*error, err);
407
413
  }
408
414
 
409
415
  /* Then the well-known file. */
410
416
  err = create_default_creds_from_path(
411
417
  grpc_get_well_known_google_credentials_file_path(), &call_creds);
412
- if (GRPC_ERROR_IS_NONE(err)) return call_creds;
418
+ if (err.ok()) return call_creds;
413
419
  *error = grpc_error_add_child(*error, err);
414
420
 
415
421
  update_tenancy();
@@ -418,11 +424,9 @@ static grpc_core::RefCountedPtr<grpc_call_credentials> make_default_call_creds(
418
424
  call_creds = grpc_core::RefCountedPtr<grpc_call_credentials>(
419
425
  grpc_google_compute_engine_credentials_create(nullptr));
420
426
  if (call_creds == nullptr) {
421
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
422
- GRPC_GOOGLE_CREDENTIAL_CREATION_ERROR);
427
+ *error = GRPC_ERROR_CREATE(GRPC_GOOGLE_CREDENTIAL_CREATION_ERROR);
423
428
  *error = grpc_error_add_child(
424
- *error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
425
- "Failed to get credentials from network"));
429
+ *error, GRPC_ERROR_CREATE("Failed to get credentials from network"));
426
430
  }
427
431
  }
428
432
 
@@ -433,7 +437,7 @@ grpc_channel_credentials* grpc_google_default_credentials_create(
433
437
  grpc_call_credentials* call_credentials) {
434
438
  grpc_channel_credentials* result = nullptr;
435
439
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds(call_credentials);
436
- grpc_error_handle error = GRPC_ERROR_NONE;
440
+ grpc_error_handle error;
437
441
  grpc_core::ExecCtx exec_ctx;
438
442
 
439
443
  GRPC_API_TRACE("grpc_google_default_credentials_create(%p)", 1,
@@ -462,9 +466,8 @@ grpc_channel_credentials* grpc_google_default_credentials_create(
462
466
  GPR_ASSERT(result != nullptr);
463
467
  } else {
464
468
  gpr_log(GPR_ERROR, "Could not create google default credentials: %s",
465
- grpc_error_std_string(error).c_str());
469
+ grpc_core::StatusToString(error).c_str());
466
470
  }
467
- GRPC_ERROR_UNREF(error);
468
471
  return result;
469
472
  }
470
473
 
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include <stdlib.h>
24
24
 
25
+ #include <memory>
25
26
  #include <utility>
26
27
 
27
28
  #include "absl/strings/str_format.h"
@@ -23,7 +23,6 @@
23
23
  #include <stdint.h>
24
24
  #include <string.h>
25
25
 
26
- #include <map>
27
26
  #include <string>
28
27
  #include <utility>
29
28
 
@@ -77,7 +76,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
77
76
  BIO* bio = nullptr;
78
77
  const char* prop_value;
79
78
  int success = 0;
80
- grpc_error_handle error = GRPC_ERROR_NONE;
79
+ grpc_error_handle error;
81
80
 
82
81
  memset(&result, 0, sizeof(grpc_auth_json_key));
83
82
  result.type = GRPC_AUTH_JSON_TYPE_INVALID;
@@ -23,7 +23,7 @@
23
23
  #include <inttypes.h>
24
24
  #include <stdlib.h>
25
25
 
26
- #include <map>
26
+ #include <memory>
27
27
  #include <string>
28
28
  #include <utility>
29
29
 
@@ -63,8 +63,8 @@
63
63
  #include "src/core/lib/iomgr/polling_entity.h"
64
64
  #include "src/core/lib/security/credentials/credentials.h"
65
65
  #include "src/core/lib/slice/b64.h"
66
+ #include "src/core/lib/slice/slice.h"
66
67
  #include "src/core/lib/slice/slice_internal.h"
67
- #include "src/core/lib/slice/slice_refcount.h"
68
68
  #include "src/core/lib/uri/uri_parser.h"
69
69
  #include "src/core/tsi/ssl_types.h"
70
70
 
@@ -114,7 +114,7 @@ static Json parse_json_part_from_jwt(const char* str, size_t len) {
114
114
  }
115
115
  absl::string_view string = grpc_core::StringViewFromSlice(slice);
116
116
  auto json = Json::Parse(string);
117
- grpc_slice_unref_internal(slice);
117
+ grpc_core::CSliceUnref(slice);
118
118
  if (!json.ok()) {
119
119
  gpr_log(GPR_ERROR, "JSON parse error: %s",
120
120
  json.status().ToString().c_str());
@@ -396,8 +396,8 @@ static verifier_cb_ctx* verifier_cb_ctx_create(
396
396
  void verifier_cb_ctx_destroy(verifier_cb_ctx* ctx) {
397
397
  if (ctx->audience != nullptr) gpr_free(ctx->audience);
398
398
  if (ctx->claims != nullptr) grpc_jwt_claims_destroy(ctx->claims);
399
- grpc_slice_unref_internal(ctx->signature);
400
- grpc_slice_unref_internal(ctx->signed_data);
399
+ grpc_core::CSliceUnref(ctx->signature);
400
+ grpc_core::CSliceUnref(ctx->signed_data);
401
401
  jose_header_destroy(ctx->header);
402
402
  for (size_t i = 0; i < HTTP_RESPONSE_COUNT; i++) {
403
403
  grpc_http_response_destroy(&ctx->responses[i]);
@@ -487,7 +487,7 @@ static BIGNUM* bignum_from_base64(const char* b64) {
487
487
  }
488
488
  result = BN_bin2bn(GRPC_SLICE_START_PTR(bin),
489
489
  TSI_SIZE_AS_SIZE(GRPC_SLICE_LENGTH(bin)), nullptr);
490
- grpc_slice_unref_internal(bin);
490
+ grpc_core::CSliceUnref(bin);
491
491
  return result;
492
492
  }
493
493
 
@@ -47,6 +47,7 @@
47
47
  #include "src/core/lib/debug/trace.h"
48
48
  #include "src/core/lib/gprpp/memory.h"
49
49
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
50
+ #include "src/core/lib/gprpp/status_helper.h"
50
51
  #include "src/core/lib/http/httpcli_ssl_credentials.h"
51
52
  #include "src/core/lib/iomgr/error.h"
52
53
  #include "src/core/lib/iomgr/load_file.h"
@@ -56,11 +57,9 @@
56
57
  #include "src/core/lib/promise/poll.h"
57
58
  #include "src/core/lib/promise/promise.h"
58
59
  #include "src/core/lib/security/util/json_util.h"
59
- #include "src/core/lib/slice/slice_refcount.h"
60
60
  #include "src/core/lib/surface/api_trace.h"
61
61
  #include "src/core/lib/transport/error_utils.h"
62
62
  #include "src/core/lib/transport/metadata_batch.h"
63
- #include "src/core/lib/transport/transport.h"
64
63
  #include "src/core/lib/uri/uri_parser.h"
65
64
 
66
65
  using grpc_core::Json;
@@ -80,7 +79,7 @@ grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json(
80
79
  grpc_auth_refresh_token result;
81
80
  const char* prop_value;
82
81
  int success = 0;
83
- grpc_error_handle error = GRPC_ERROR_NONE;
82
+ grpc_error_handle error;
84
83
 
85
84
  memset(&result, 0, sizeof(grpc_auth_refresh_token));
86
85
  result.type = GRPC_AUTH_JSON_TYPE_INVALID;
@@ -235,7 +234,7 @@ end:
235
234
 
236
235
  static void on_oauth2_token_fetcher_http_response(void* user_data,
237
236
  grpc_error_handle error) {
238
- GRPC_LOG_IF_ERROR("oauth_fetch", GRPC_ERROR_REF(error));
237
+ GRPC_LOG_IF_ERROR("oauth_fetch", error);
239
238
  grpc_credentials_metadata_request* r =
240
239
  static_cast<grpc_credentials_metadata_request*>(user_data);
241
240
  grpc_oauth2_token_fetcher_credentials* c =
@@ -248,10 +247,9 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
248
247
  absl::optional<grpc_core::Slice> access_token_value;
249
248
  grpc_core::Duration token_lifetime;
250
249
  grpc_credentials_status status =
251
- GRPC_ERROR_IS_NONE(error)
252
- ? grpc_oauth2_token_fetcher_credentials_parse_server_response(
253
- &r->response, &access_token_value, &token_lifetime)
254
- : GRPC_CREDENTIALS_ERROR;
250
+ error.ok() ? grpc_oauth2_token_fetcher_credentials_parse_server_response(
251
+ &r->response, &access_token_value, &token_lifetime)
252
+ : GRPC_CREDENTIALS_ERROR;
255
253
  // Update cache and grab list of pending requests.
256
254
  gpr_mu_lock(&mu_);
257
255
  token_fetch_pending_ = false;
@@ -275,10 +273,9 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
275
273
  [](absl::string_view, const grpc_core::Slice&) { abort(); });
276
274
  pending_request->result = std::move(pending_request->md);
277
275
  } else {
278
- auto err = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
276
+ auto err = GRPC_ERROR_CREATE_REFERENCING(
279
277
  "Error occurred when fetching oauth2 token.", &error, 1);
280
278
  pending_request->result = grpc_error_to_absl_status(err);
281
- GRPC_ERROR_UNREF(err);
282
279
  }
283
280
  pending_request->done.store(true, std::memory_order_release);
284
281
  pending_request->waker.Wakeup();
@@ -534,10 +531,10 @@ void MaybeAddToBody(const char* field_name, const char* field,
534
531
 
535
532
  grpc_error_handle LoadTokenFile(const char* path, gpr_slice* token) {
536
533
  grpc_error_handle err = grpc_load_file(path, 1, token);
537
- if (!GRPC_ERROR_IS_NONE(err)) return err;
534
+ if (!err.ok()) return err;
538
535
  if (GRPC_SLICE_LENGTH(*token) == 0) {
539
536
  gpr_log(GPR_ERROR, "Token file %s is empty", path);
540
- err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Token file is empty.");
537
+ err = GRPC_ERROR_CREATE("Token file is empty.");
541
538
  }
542
539
  return err;
543
540
  }
@@ -572,9 +569,8 @@ class StsTokenFetcherCredentials
572
569
  grpc_http_request request;
573
570
  memset(&request, 0, sizeof(grpc_http_request));
574
571
  grpc_error_handle err = FillBody(&request.body, &request.body_length);
575
- if (!GRPC_ERROR_IS_NONE(err)) {
572
+ if (!err.ok()) {
576
573
  response_cb(metadata_req, err);
577
- GRPC_ERROR_UNREF(err);
578
574
  return;
579
575
  }
580
576
  grpc_http_header header = {
@@ -606,22 +602,22 @@ class StsTokenFetcherCredentials
606
602
  std::vector<std::string> body_parts;
607
603
  grpc_slice subject_token = grpc_empty_slice();
608
604
  grpc_slice actor_token = grpc_empty_slice();
609
- grpc_error_handle err = GRPC_ERROR_NONE;
605
+ grpc_error_handle err;
610
606
 
611
607
  auto cleanup = [&body, &body_length, &body_parts, &subject_token,
612
608
  &actor_token, &err]() {
613
- if (GRPC_ERROR_IS_NONE(err)) {
609
+ if (err.ok()) {
614
610
  std::string body_str = absl::StrJoin(body_parts, "");
615
611
  *body = gpr_strdup(body_str.c_str());
616
612
  *body_length = body_str.size();
617
613
  }
618
- grpc_slice_unref_internal(subject_token);
619
- grpc_slice_unref_internal(actor_token);
614
+ CSliceUnref(subject_token);
615
+ CSliceUnref(actor_token);
620
616
  return err;
621
617
  };
622
618
 
623
619
  err = LoadTokenFile(subject_token_path_.get(), &subject_token);
624
- if (!GRPC_ERROR_IS_NONE(err)) return cleanup();
620
+ if (!err.ok()) return cleanup();
625
621
  body_parts.push_back(absl::StrFormat(
626
622
  GRPC_STS_POST_MINIMAL_BODY_FORMAT_STRING,
627
623
  reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(subject_token)),
@@ -633,7 +629,7 @@ class StsTokenFetcherCredentials
633
629
  &body_parts);
634
630
  if ((actor_token_path_ != nullptr) && *actor_token_path_ != '\0') {
635
631
  err = LoadTokenFile(actor_token_path_.get(), &actor_token);
636
- if (!GRPC_ERROR_IS_NONE(err)) return cleanup();
632
+ if (!err.ok()) return cleanup();
637
633
  MaybeAddToBody(
638
634
  "actor_token",
639
635
  reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(actor_token)),
@@ -666,31 +662,29 @@ absl::StatusOr<URI> ValidateStsCredentialsOptions(
666
662
  ? ""
667
663
  : options->token_exchange_service_uri);
668
664
  if (!sts_url.ok()) {
669
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
665
+ error_list.push_back(GRPC_ERROR_CREATE(
670
666
  absl::StrFormat("Invalid or missing STS endpoint URL. Error: %s",
671
667
  sts_url.status().ToString())));
672
668
  } else if (sts_url->scheme() != "https" && sts_url->scheme() != "http") {
673
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
674
- "Invalid URI scheme, must be https to http."));
669
+ error_list.push_back(
670
+ GRPC_ERROR_CREATE("Invalid URI scheme, must be https to http."));
675
671
  }
676
672
  if (options->subject_token_path == nullptr ||
677
673
  strlen(options->subject_token_path) == 0) {
678
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
679
- "subject_token needs to be specified"));
674
+ error_list.push_back(
675
+ GRPC_ERROR_CREATE("subject_token needs to be specified"));
680
676
  }
681
677
  if (options->subject_token_type == nullptr ||
682
678
  strlen(options->subject_token_type) == 0) {
683
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
684
- "subject_token_type needs to be specified"));
679
+ error_list.push_back(
680
+ GRPC_ERROR_CREATE("subject_token_type needs to be specified"));
685
681
  }
686
682
  if (error_list.empty()) {
687
683
  return sts_url;
688
684
  }
689
685
  auto grpc_error_vec = GRPC_ERROR_CREATE_FROM_VECTOR(
690
686
  "Invalid STS Credentials Options", &error_list);
691
- auto retval =
692
- absl::InvalidArgumentError(grpc_error_std_string(grpc_error_vec));
693
- GRPC_ERROR_UNREF(grpc_error_vec);
687
+ auto retval = absl::InvalidArgumentError(StatusToString(grpc_error_vec));
694
688
  return retval;
695
689
  }
696
690
 
@@ -21,6 +21,7 @@
21
21
  #include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
22
22
 
23
23
  #include <atomic>
24
+ #include <memory>
24
25
 
25
26
  #include "absl/status/status.h"
26
27
  #include "absl/strings/str_cat.h"
@@ -95,7 +96,7 @@ grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
95
96
  for (size_t i = 0; i < num_md; ++i) {
96
97
  md_->Append(
97
98
  grpc_core::StringViewFromSlice(md[i].key),
98
- grpc_core::Slice(grpc_slice_ref_internal(md[i].value)),
99
+ grpc_core::Slice(grpc_core::CSliceRef(md[i].value)),
99
100
  [&error](absl::string_view message, const grpc_core::Slice&) {
100
101
  error = absl::UnavailableError(message);
101
102
  });
@@ -132,8 +133,8 @@ void grpc_plugin_credentials::PendingRequest::RequestMetadataReady(
132
133
  }
133
134
  for (size_t i = 0; i < num_md; ++i) {
134
135
  grpc_metadata p;
135
- p.key = grpc_slice_ref_internal(md[i].key);
136
- p.value = grpc_slice_ref_internal(md[i].value);
136
+ p.key = grpc_core::CSliceRef(md[i].key);
137
+ p.value = grpc_core::CSliceRef(md[i].value);
137
138
  r->metadata_.push_back(p);
138
139
  }
139
140
  r->error_details_ = error_details == nullptr ? "" : error_details;
@@ -191,8 +192,8 @@ grpc_plugin_credentials::GetRequestMetadata(
191
192
  error_details);
192
193
  // Clean up.
193
194
  for (size_t i = 0; i < num_creds_md; ++i) {
194
- grpc_slice_unref_internal(creds_md[i].key);
195
- grpc_slice_unref_internal(creds_md[i].value);
195
+ grpc_core::CSliceUnref(creds_md[i].key);
196
+ grpc_core::CSliceUnref(creds_md[i].value);
196
197
  }
197
198
  gpr_free(const_cast<char*>(error_details));
198
199
 
@@ -45,7 +45,7 @@
45
45
  #include "src/core/lib/promise/poll.h"
46
46
  #include "src/core/lib/security/credentials/call_creds_util.h"
47
47
  #include "src/core/lib/security/credentials/credentials.h"
48
- #include "src/core/lib/slice/slice_refcount.h"
48
+ #include "src/core/lib/slice/slice.h"
49
49
  #include "src/core/lib/transport/transport.h"
50
50
 
51
51
  extern grpc_core::TraceFlag grpc_plugin_credentials_trace;
@@ -81,8 +81,8 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
81
81
  ~PendingRequest() override {
82
82
  grpc_auth_metadata_context_reset(&context_);
83
83
  for (size_t i = 0; i < metadata_.size(); i++) {
84
- grpc_slice_unref_internal(metadata_[i].key);
85
- grpc_slice_unref_internal(metadata_[i].value);
84
+ grpc_core::CSliceUnref(metadata_[i].key);
85
+ grpc_core::CSliceUnref(metadata_[i].value);
86
86
  }
87
87
  }
88
88
 
@@ -19,7 +19,8 @@
19
19
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
20
20
 
21
21
  #include <algorithm>
22
- #include <vector>
22
+
23
+ #include "absl/status/status.h"
23
24
 
24
25
  #include <grpc/grpc_security.h>
25
26
  #include <grpc/support/log.h>
@@ -32,7 +33,7 @@ void grpc_tls_certificate_distributor::SetKeyMaterials(
32
33
  auto& cert_info = certificate_info_map_[cert_name];
33
34
  if (pem_root_certs.has_value()) {
34
35
  // Successful credential updates will clear any pre-existing error.
35
- cert_info.SetRootError(GRPC_ERROR_NONE);
36
+ cert_info.SetRootError(absl::OkStatus());
36
37
  for (auto* watcher_ptr : cert_info.root_cert_watchers) {
37
38
  GPR_ASSERT(watcher_ptr != nullptr);
38
39
  const auto watcher_it = watchers_.find(watcher_ptr);
@@ -57,7 +58,7 @@ void grpc_tls_certificate_distributor::SetKeyMaterials(
57
58
  }
58
59
  if (pem_key_cert_pairs.has_value()) {
59
60
  // Successful credential updates will clear any pre-existing error.
60
- cert_info.SetIdentityError(GRPC_ERROR_NONE);
61
+ cert_info.SetIdentityError(absl::OkStatus());
61
62
  for (const auto watcher_ptr : cert_info.identity_cert_watchers) {
62
63
  GPR_ASSERT(watcher_ptr != nullptr);
63
64
  const auto watcher_it = watchers_.find(watcher_ptr);
@@ -113,7 +114,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
113
114
  GPR_ASSERT(watcher_it != watchers_.end());
114
115
  // identity_cert_error_to_report is the error of the identity cert this
115
116
  // watcher is watching, if there is any.
116
- grpc_error_handle identity_cert_error_to_report = GRPC_ERROR_NONE;
117
+ grpc_error_handle identity_cert_error_to_report;
117
118
  if (identity_cert_error.has_value() &&
118
119
  watcher_it->second.identity_cert_name == cert_name) {
119
120
  identity_cert_error_to_report = *identity_cert_error;
@@ -122,8 +123,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
122
123
  certificate_info_map_[*watcher_it->second.identity_cert_name];
123
124
  identity_cert_error_to_report = identity_cert_info.identity_cert_error;
124
125
  }
125
- watcher_ptr->OnError(GRPC_ERROR_REF(*root_cert_error),
126
- GRPC_ERROR_REF(identity_cert_error_to_report));
126
+ watcher_ptr->OnError(*root_cert_error, identity_cert_error_to_report);
127
127
  }
128
128
  cert_info.SetRootError(*root_cert_error);
129
129
  }
@@ -134,7 +134,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
134
134
  GPR_ASSERT(watcher_it != watchers_.end());
135
135
  // root_cert_error_to_report is the error of the root cert this watcher is
136
136
  // watching, if there is any.
137
- grpc_error_handle root_cert_error_to_report = GRPC_ERROR_NONE;
137
+ grpc_error_handle root_cert_error_to_report;
138
138
  if (root_cert_error.has_value() &&
139
139
  watcher_it->second.root_cert_name == cert_name) {
140
140
  // In this case, We've already sent the error updates at the time when
@@ -145,32 +145,28 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
145
145
  certificate_info_map_[*watcher_it->second.root_cert_name];
146
146
  root_cert_error_to_report = root_cert_info.root_cert_error;
147
147
  }
148
- watcher_ptr->OnError(GRPC_ERROR_REF(root_cert_error_to_report),
149
- GRPC_ERROR_REF(*identity_cert_error));
148
+ watcher_ptr->OnError(root_cert_error_to_report, *identity_cert_error);
150
149
  }
151
150
  cert_info.SetIdentityError(*identity_cert_error);
152
151
  }
153
152
  };
154
153
 
155
154
  void grpc_tls_certificate_distributor::SetError(grpc_error_handle error) {
156
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
155
+ GPR_ASSERT(!error.ok());
157
156
  grpc_core::MutexLock lock(&mu_);
158
157
  for (const auto& watcher : watchers_) {
159
158
  const auto watcher_ptr = watcher.first;
160
159
  GPR_ASSERT(watcher_ptr != nullptr);
161
160
  const auto& watcher_info = watcher.second;
162
161
  watcher_ptr->OnError(
163
- watcher_info.root_cert_name.has_value() ? GRPC_ERROR_REF(error)
164
- : GRPC_ERROR_NONE,
165
- watcher_info.identity_cert_name.has_value() ? GRPC_ERROR_REF(error)
166
- : GRPC_ERROR_NONE);
162
+ watcher_info.root_cert_name.has_value() ? error : absl::OkStatus(),
163
+ watcher_info.identity_cert_name.has_value() ? error : absl::OkStatus());
167
164
  }
168
165
  for (auto& cert_info_entry : certificate_info_map_) {
169
166
  auto& cert_info = cert_info_entry.second;
170
- cert_info.SetRootError(GRPC_ERROR_REF(error));
171
- cert_info.SetIdentityError(GRPC_ERROR_REF(error));
167
+ cert_info.SetRootError(error);
168
+ cert_info.SetIdentityError(error);
172
169
  }
173
- GRPC_ERROR_UNREF(error);
174
170
  };
175
171
 
176
172
  void grpc_tls_certificate_distributor::WatchTlsCertificates(
@@ -195,15 +191,15 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates(
195
191
  identity_cert_name};
196
192
  absl::optional<absl::string_view> updated_root_certs;
197
193
  absl::optional<grpc_core::PemKeyCertPairList> updated_identity_pairs;
198
- grpc_error_handle root_error = GRPC_ERROR_NONE;
199
- grpc_error_handle identity_error = GRPC_ERROR_NONE;
194
+ grpc_error_handle root_error;
195
+ grpc_error_handle identity_error;
200
196
  if (root_cert_name.has_value()) {
201
197
  CertificateInfo& cert_info = certificate_info_map_[*root_cert_name];
202
198
  start_watching_root_cert = cert_info.root_cert_watchers.empty();
203
199
  already_watching_identity_for_root_cert =
204
200
  !cert_info.identity_cert_watchers.empty();
205
201
  cert_info.root_cert_watchers.insert(watcher_ptr);
206
- root_error = GRPC_ERROR_REF(cert_info.root_cert_error);
202
+ root_error = cert_info.root_cert_error;
207
203
  // Empty credentials will be treated as no updates.
208
204
  if (!cert_info.pem_root_certs.empty()) {
209
205
  updated_root_certs = cert_info.pem_root_certs;
@@ -215,7 +211,7 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates(
215
211
  already_watching_root_for_identity_cert =
216
212
  !cert_info.root_cert_watchers.empty();
217
213
  cert_info.identity_cert_watchers.insert(watcher_ptr);
218
- identity_error = GRPC_ERROR_REF(cert_info.identity_cert_error);
214
+ identity_error = cert_info.identity_cert_error;
219
215
  // Empty credentials will be treated as no updates.
220
216
  if (!cert_info.pem_key_cert_pairs.empty()) {
221
217
  updated_identity_pairs = cert_info.pem_key_cert_pairs;
@@ -231,13 +227,9 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates(
231
227
  std::move(updated_identity_pairs));
232
228
  }
233
229
  // Notify this watcher if the certs it is watching already had some errors.
234
- if (!GRPC_ERROR_IS_NONE(root_error) ||
235
- !GRPC_ERROR_IS_NONE(identity_error)) {
236
- watcher_ptr->OnError(GRPC_ERROR_REF(root_error),
237
- GRPC_ERROR_REF(identity_error));
230
+ if (!root_error.ok() || !identity_error.ok()) {
231
+ watcher_ptr->OnError(root_error, identity_error);
238
232
  }
239
- GRPC_ERROR_UNREF(root_error);
240
- GRPC_ERROR_UNREF(identity_error);
241
233
  }
242
234
  // Invoke watch status callback if needed.
243
235
  {
@@ -176,9 +176,9 @@ struct grpc_tls_certificate_distributor
176
176
  // The contents of the identity key-certificate pairs.
177
177
  grpc_core::PemKeyCertPairList pem_key_cert_pairs;
178
178
  // The root cert reloading error propagated by the caller.
179
- grpc_error_handle root_cert_error = GRPC_ERROR_NONE;
179
+ grpc_error_handle root_cert_error;
180
180
  // The identity cert reloading error propagated by the caller.
181
- grpc_error_handle identity_cert_error = GRPC_ERROR_NONE;
181
+ grpc_error_handle identity_cert_error;
182
182
  // The set of watchers watching root certificates.
183
183
  // This is mainly used for quickly looking up the affected watchers while
184
184
  // performing a credential reloading.
@@ -188,16 +188,9 @@ struct grpc_tls_certificate_distributor
188
188
  // credential reloading.
189
189
  std::set<TlsCertificatesWatcherInterface*> identity_cert_watchers;
190
190
 
191
- ~CertificateInfo() {
192
- GRPC_ERROR_UNREF(root_cert_error);
193
- GRPC_ERROR_UNREF(identity_cert_error);
194
- }
195
- void SetRootError(grpc_error_handle error) {
196
- GRPC_ERROR_UNREF(root_cert_error);
197
- root_cert_error = error;
198
- }
191
+ ~CertificateInfo() {}
192
+ void SetRootError(grpc_error_handle error) { root_cert_error = error; }
199
193
  void SetIdentityError(grpc_error_handle error) {
200
- GRPC_ERROR_UNREF(identity_cert_error);
201
194
  identity_cert_error = error;
202
195
  }
203
196
  };