grpc 1.50.0.pre1 → 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.
- checksums.yaml +4 -4
- data/Makefile +131 -42
- data/include/grpc/event_engine/event_engine.h +10 -3
- data/include/grpc/event_engine/slice_buffer.h +17 -0
- data/include/grpc/grpc.h +0 -10
- data/include/grpc/impl/codegen/grpc_types.h +1 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
- data/src/core/ext/filters/client_channel/client_channel.h +3 -4
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
- data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
- data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
- data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
- data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
- data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
- data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
- data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +15 -68
- data/src/core/ext/xds/xds_api.h +3 -7
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_client.cc +122 -90
- data/src/core/ext/xds/xds_client.h +7 -2
- data/src/core/ext/xds/xds_client_grpc.cc +5 -24
- data/src/core/ext/xds/xds_cluster.cc +291 -183
- data/src/core/ext/xds/xds_cluster.h +11 -15
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
- data/src/core/ext/xds/xds_common_types.cc +208 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +214 -129
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
- data/src/core/ext/xds/xds_http_filters.cc +60 -73
- data/src/core/ext/xds/xds_http_filters.h +67 -19
- data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
- data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +459 -417
- data/src/core/ext/xds/xds_listener.h +43 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
- data/src/core/ext/xds/xds_route_config.cc +94 -80
- data/src/core/ext/xds/xds_route_config.h +10 -10
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
- data/src/core/lib/address_utils/parse_address.cc +11 -10
- data/src/core/lib/channel/channel_args.h +16 -1
- data/src/core/lib/channel/channel_stack.cc +23 -20
- data/src/core/lib/channel/channel_stack.h +17 -4
- data/src/core/lib/channel/channel_stack_builder.cc +4 -7
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +4 -5
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +695 -35
- data/src/core/lib/channel/connected_channel.h +0 -4
- data/src/core/lib/channel/promise_based_filter.cc +1004 -140
- data/src/core/lib/channel/promise_based_filter.h +364 -87
- data/src/core/lib/compression/message_compress.cc +5 -5
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +22 -119
- data/src/core/lib/debug/stats.h +29 -35
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/thread_pool.cc +106 -25
- data/src/core/lib/event_engine/thread_pool.h +32 -9
- data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
- data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -2
- data/src/core/lib/experiments/experiments.h +8 -1
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
- data/src/core/lib/gprpp/thd_windows.cc +1 -2
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +13 -2
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/http/httpcli.cc +40 -44
- data/src/core/lib/http/httpcli.h +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +4 -6
- data/src/core/lib/http/parser.cc +54 -65
- data/src/core/lib/iomgr/buffer_list.cc +105 -116
- data/src/core/lib/iomgr/buffer_list.h +60 -44
- data/src/core/lib/iomgr/call_combiner.cc +11 -10
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +49 -5
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +27 -42
- data/src/core/lib/iomgr/error.h +22 -152
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
- data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
- data/src/core/lib/iomgr/exec_ctx.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.h +2 -3
- data/src/core/lib/iomgr/executor.cc +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -10
- data/src/core/lib/iomgr/pollset_windows.cc +4 -4
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -4
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
- data/src/core/lib/iomgr/tcp_posix.cc +92 -108
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
- data/src/core/lib/iomgr/tcp_windows.cc +27 -34
- data/src/core/lib/iomgr/timer.h +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +9 -15
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +7 -2
- data/src/core/lib/json/json_object_loader.h +22 -0
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/load_balancing/lb_policy.cc +1 -1
- data/src/core/lib/load_balancing/lb_policy.h +4 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +38 -15
- data/src/core/lib/promise/arena_promise.h +80 -51
- data/src/core/lib/promise/context.h +13 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +58 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +13 -0
- data/src/core/lib/promise/seq.h +3 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +10 -13
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +1 -3
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/arena.cc +19 -0
- data/src/core/lib/resource_quota/arena.h +89 -0
- data/src/core/lib/resource_quota/memory_quota.cc +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/context/security_context.h +10 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
- data/src/core/lib/security/transport/security_handshaker.cc +53 -53
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +4 -5
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/slice.cc +7 -1
- data/src/core/lib/slice/slice.h +19 -6
- data/src/core/lib/slice/slice_buffer.cc +13 -14
- data/src/core/lib/slice/slice_internal.h +13 -21
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/surface/byte_buffer.cc +3 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1366 -239
- data/src/core/lib/surface/call.h +44 -0
- data/src/core/lib/surface/call_details.cc +3 -3
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +44 -49
- data/src/core/lib/surface/channel.h +9 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/channel_stack_type.cc +4 -0
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.cc +38 -52
- data/src/core/lib/surface/init.cc +8 -39
- data/src/core/lib/surface/init_internally.h +8 -0
- data/src/core/lib/surface/lame_client.cc +10 -8
- data/src/core/lib/surface/server.cc +48 -70
- data/src/core/lib/surface/server.h +3 -4
- data/src/core/lib/surface/validate_metadata.cc +11 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +34 -28
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +14 -14
- data/src/core/lib/transport/handshaker.h +1 -1
- data/src/core/lib/transport/handshaker_factory.h +26 -0
- data/src/core/lib/transport/handshaker_registry.cc +8 -2
- data/src/core/lib/transport/handshaker_registry.h +3 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
- data/src/core/lib/transport/metadata_batch.h +17 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/transport.cc +63 -17
- data/src/core/lib/transport/transport.h +64 -68
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +7 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
- data/src/core/tsi/fake_transport_security.cc +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +57 -20
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- 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/
|
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
|
-
|
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
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
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
|
-
|
220
|
-
|
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 (!
|
265
|
-
|
266
|
-
call_read_cb(
|
267
|
-
|
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
|
-
|
341
|
+
grpc_slice_buffer_reset_and_unref(&ep->source_buffer);
|
342
342
|
|
343
343
|
if (result != TSI_OK) {
|
344
|
-
|
345
|
-
call_read_cb(
|
346
|
-
|
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,
|
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
|
-
|
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,
|
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
|
-
|
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
|
-
|
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
|
-
|
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/
|
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
|
-
|
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
|
-
|
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 (
|
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 =
|
203
|
+
error = GRPC_ERROR_CREATE("Handshaker shutdown");
|
203
204
|
}
|
204
205
|
gpr_log(GPR_DEBUG, "Security handshake failed: %s",
|
205
|
-
|
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,
|
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 (!
|
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
|
-
|
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
|
-
|
274
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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_,
|
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(
|
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
|
-
|
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
|
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
|
369
|
+
grpc_error_handle error;
|
373
370
|
// Handshaker was shutdown.
|
374
371
|
if (is_shutdown_) {
|
375
|
-
return
|
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
|
-
|
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
|
-
|
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 (!
|
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
|
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
|
-
|
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 (!
|
489
|
-
h->HandshakeFailedLocked(
|
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 (!
|
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
|
-
|
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 (!
|
522
|
-
h->HandshakeFailedLocked(
|
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 (!
|
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_,
|
550
|
+
connector_->cancel_check_peer(&on_peer_checked_, why);
|
554
551
|
tsi_handshaker_shutdown(handshaker_);
|
555
|
-
grpc_endpoint_shutdown(args_->endpoint,
|
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 (!
|
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 {
|
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 =
|
590
|
-
"Failed to create security handshaker");
|
591
|
-
grpc_endpoint_shutdown(args->endpoint,
|
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
|
-
|
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
|
-
|
659
|
-
absl::make_unique<ClientSecurityHandshakerFactory>());
|
660
|
+
HANDSHAKER_CLIENT, std::make_unique<ClientSecurityHandshakerFactory>());
|
660
661
|
builder->handshaker_registry()->RegisterHandshakerFactory(
|
661
|
-
|
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() {
|
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
|
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 (
|
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 =
|
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
|
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 =
|
210
|
-
|
211
|
-
|
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
|
-
|
219
|
-
|
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 (!
|
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 (
|
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,
|
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 =
|
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
|
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
|
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(
|
26
|
-
|
27
|
-
|
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
|
}
|