diff --git a/BUILD b/BUILD index dcc62db0d28..7090778b021 100644 --- a/BUILD +++ b/BUILD @@ -2213,7 +2213,6 @@ grpc_cc_library( "//src/core:lib/security/credentials/plugin/plugin_credentials.cc", "//src/core:lib/security/security_connector/security_connector.cc", "//src/core:lib/security/transport/client_auth_filter.cc", - "//src/core:lib/security/transport/legacy_server_auth_filter.cc", "//src/core:lib/security/transport/secure_endpoint.cc", "//src/core:lib/security/transport/security_handshaker.cc", "//src/core:lib/security/transport/server_auth_filter.cc", @@ -4140,13 +4139,11 @@ grpc_cc_library( "//src/core:ext/filters/http/client/http_client_filter.cc", "//src/core:ext/filters/http/http_filters_plugin.cc", "//src/core:ext/filters/http/message_compress/compression_filter.cc", - "//src/core:ext/filters/http/message_compress/legacy_compression_filter.cc", "//src/core:ext/filters/http/server/http_server_filter.cc", ], hdrs = [ "//src/core:ext/filters/http/client/http_client_filter.h", "//src/core:ext/filters/http/message_compress/compression_filter.h", - "//src/core:ext/filters/http/message_compress/legacy_compression_filter.h", "//src/core:ext/filters/http/server/http_server_filter.h", ], external_deps = [ diff --git a/CMakeLists.txt b/CMakeLists.txt index 4885629ec34..0540df51eb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1844,7 +1844,6 @@ add_library(grpc src/core/ext/filters/http/client_authority_filter.cc src/core/ext/filters/http/http_filters_plugin.cc src/core/ext/filters/http/message_compress/compression_filter.cc - src/core/ext/filters/http/message_compress/legacy_compression_filter.cc src/core/ext/filters/http/server/http_server_filter.cc src/core/ext/filters/message_size/message_size_filter.cc src/core/ext/filters/rbac/rbac_filter.cc @@ -2478,7 +2477,6 @@ add_library(grpc src/core/lib/security/security_connector/ssl_utils.cc src/core/lib/security/security_connector/tls/tls_security_connector.cc src/core/lib/security/transport/client_auth_filter.cc - src/core/lib/security/transport/legacy_server_auth_filter.cc src/core/lib/security/transport/secure_endpoint.cc src/core/lib/security/transport/security_handshaker.cc src/core/lib/security/transport/server_auth_filter.cc @@ -2943,7 +2941,6 @@ add_library(grpc_unsecure src/core/ext/filters/http/client_authority_filter.cc src/core/ext/filters/http/http_filters_plugin.cc src/core/ext/filters/http/message_compress/compression_filter.cc - src/core/ext/filters/http/message_compress/legacy_compression_filter.cc src/core/ext/filters/http/server/http_server_filter.cc src/core/ext/filters/message_size/message_size_filter.cc src/core/ext/transport/chttp2/client/chttp2_connector.cc @@ -3207,7 +3204,6 @@ add_library(grpc_unsecure src/core/lib/security/security_connector/load_system_roots_windows.cc src/core/lib/security/security_connector/security_connector.cc src/core/lib/security/transport/client_auth_filter.cc - src/core/lib/security/transport/legacy_server_auth_filter.cc src/core/lib/security/transport/secure_endpoint.cc src/core/lib/security/transport/security_handshaker.cc src/core/lib/security/transport/server_auth_filter.cc @@ -5317,7 +5313,6 @@ add_library(grpc_authorization_provider src/core/lib/security/security_connector/load_system_roots_windows.cc src/core/lib/security/security_connector/security_connector.cc src/core/lib/security/transport/client_auth_filter.cc - src/core/lib/security/transport/legacy_server_auth_filter.cc src/core/lib/security/transport/secure_endpoint.cc src/core/lib/security/transport/security_handshaker.cc src/core/lib/security/transport/server_auth_filter.cc diff --git a/Makefile b/Makefile index a6fb5f7ddc3..4db053c028b 100644 --- a/Makefile +++ b/Makefile @@ -696,7 +696,6 @@ LIBGRPC_SRC = \ src/core/ext/filters/http/client_authority_filter.cc \ src/core/ext/filters/http/http_filters_plugin.cc \ src/core/ext/filters/http/message_compress/compression_filter.cc \ - src/core/ext/filters/http/message_compress/legacy_compression_filter.cc \ src/core/ext/filters/http/server/http_server_filter.cc \ src/core/ext/filters/message_size/message_size_filter.cc \ src/core/ext/filters/rbac/rbac_filter.cc \ @@ -1375,7 +1374,6 @@ LIBGRPC_SRC = \ src/core/lib/security/security_connector/ssl_utils.cc \ src/core/lib/security/security_connector/tls/tls_security_connector.cc \ src/core/lib/security/transport/client_auth_filter.cc \ - src/core/lib/security/transport/legacy_server_auth_filter.cc \ src/core/lib/security/transport/secure_endpoint.cc \ src/core/lib/security/transport/security_handshaker.cc \ src/core/lib/security/transport/server_auth_filter.cc \ diff --git a/Package.swift b/Package.swift index 3b4e1e79352..c78a4b5b282 100644 --- a/Package.swift +++ b/Package.swift @@ -176,8 +176,6 @@ let package = Package( "src/core/ext/filters/http/http_filters_plugin.cc", "src/core/ext/filters/http/message_compress/compression_filter.cc", "src/core/ext/filters/http/message_compress/compression_filter.h", - "src/core/ext/filters/http/message_compress/legacy_compression_filter.cc", - "src/core/ext/filters/http/message_compress/legacy_compression_filter.h", "src/core/ext/filters/http/server/http_server_filter.cc", "src/core/ext/filters/http/server/http_server_filter.h", "src/core/ext/filters/message_size/message_size_filter.cc", @@ -1742,7 +1740,6 @@ let package = Package( "src/core/lib/security/security_connector/tls/tls_security_connector.h", "src/core/lib/security/transport/auth_filters.h", "src/core/lib/security/transport/client_auth_filter.cc", - "src/core/lib/security/transport/legacy_server_auth_filter.cc", "src/core/lib/security/transport/secure_endpoint.cc", "src/core/lib/security/transport/secure_endpoint.h", "src/core/lib/security/transport/security_handshaker.cc", diff --git a/bazel/experiments.bzl b/bazel/experiments.bzl index 79de231736b..c74a57d1f9e 100644 --- a/bazel/experiments.bzl +++ b/bazel/experiments.bzl @@ -47,8 +47,6 @@ EXPERIMENT_ENABLES = { "unconstrained_max_quota_buffer_size": "unconstrained_max_quota_buffer_size", "v3_backend_metric_filter": "v3_backend_metric_filter", "v3_channel_idle_filters": "v3_channel_idle_filters", - "v3_compression_filter": "v3_compression_filter", - "v3_server_auth_filter": "v3_server_auth_filter", "work_serializer_clears_time_cache": "work_serializer_clears_time_cache", "work_serializer_dispatch": "event_engine_client,work_serializer_dispatch", } @@ -64,9 +62,6 @@ EXPERIMENTS = { "dbg": { }, "off": { - "compression_test": [ - "v3_compression_filter", - ], "core_end2end_test": [ "promise_based_server_call", ], @@ -114,9 +109,6 @@ EXPERIMENTS = { "dbg": { }, "off": { - "compression_test": [ - "v3_compression_filter", - ], "core_end2end_test": [ "promise_based_server_call", ], @@ -158,9 +150,6 @@ EXPERIMENTS = { "dbg": { }, "off": { - "compression_test": [ - "v3_compression_filter", - ], "core_end2end_test": [ "chaotic_good", "event_engine_client", diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index bf256ad9009..f5731aa6b66 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -249,7 +249,6 @@ libs: - src/core/ext/filters/http/client/http_client_filter.h - src/core/ext/filters/http/client_authority_filter.h - src/core/ext/filters/http/message_compress/compression_filter.h - - src/core/ext/filters/http/message_compress/legacy_compression_filter.h - src/core/ext/filters/http/server/http_server_filter.h - src/core/ext/filters/message_size/message_size_filter.h - src/core/ext/filters/rbac/rbac_filter.h @@ -1275,7 +1274,6 @@ libs: - src/core/ext/filters/http/client_authority_filter.cc - src/core/ext/filters/http/http_filters_plugin.cc - src/core/ext/filters/http/message_compress/compression_filter.cc - - src/core/ext/filters/http/message_compress/legacy_compression_filter.cc - src/core/ext/filters/http/server/http_server_filter.cc - src/core/ext/filters/message_size/message_size_filter.cc - src/core/ext/filters/rbac/rbac_filter.cc @@ -1909,7 +1907,6 @@ libs: - src/core/lib/security/security_connector/ssl_utils.cc - src/core/lib/security/security_connector/tls/tls_security_connector.cc - src/core/lib/security/transport/client_auth_filter.cc - - src/core/lib/security/transport/legacy_server_auth_filter.cc - src/core/lib/security/transport/secure_endpoint.cc - src/core/lib/security/transport/security_handshaker.cc - src/core/lib/security/transport/server_auth_filter.cc @@ -2242,7 +2239,6 @@ libs: - src/core/ext/filters/http/client/http_client_filter.h - src/core/ext/filters/http/client_authority_filter.h - src/core/ext/filters/http/message_compress/compression_filter.h - - src/core/ext/filters/http/message_compress/legacy_compression_filter.h - src/core/ext/filters/http/server/http_server_filter.h - src/core/ext/filters/message_size/message_size_filter.h - src/core/ext/transport/chttp2/client/chttp2_connector.h @@ -2739,7 +2735,6 @@ libs: - src/core/ext/filters/http/client_authority_filter.cc - src/core/ext/filters/http/http_filters_plugin.cc - src/core/ext/filters/http/message_compress/compression_filter.cc - - src/core/ext/filters/http/message_compress/legacy_compression_filter.cc - src/core/ext/filters/http/server/http_server_filter.cc - src/core/ext/filters/message_size/message_size_filter.cc - src/core/ext/transport/chttp2/client/chttp2_connector.cc @@ -3003,7 +2998,6 @@ libs: - src/core/lib/security/security_connector/load_system_roots_windows.cc - src/core/lib/security/security_connector/security_connector.cc - src/core/lib/security/transport/client_auth_filter.cc - - src/core/lib/security/transport/legacy_server_auth_filter.cc - src/core/lib/security/transport/secure_endpoint.cc - src/core/lib/security/transport/security_handshaker.cc - src/core/lib/security/transport/server_auth_filter.cc @@ -4959,7 +4953,6 @@ libs: - src/core/lib/security/security_connector/load_system_roots_windows.cc - src/core/lib/security/security_connector/security_connector.cc - src/core/lib/security/transport/client_auth_filter.cc - - src/core/lib/security/transport/legacy_server_auth_filter.cc - src/core/lib/security/transport/secure_endpoint.cc - src/core/lib/security/transport/security_handshaker.cc - src/core/lib/security/transport/server_auth_filter.cc diff --git a/config.m4 b/config.m4 index 0e5da21558c..d2e1dcc8f91 100644 --- a/config.m4 +++ b/config.m4 @@ -71,7 +71,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/filters/http/client_authority_filter.cc \ src/core/ext/filters/http/http_filters_plugin.cc \ src/core/ext/filters/http/message_compress/compression_filter.cc \ - src/core/ext/filters/http/message_compress/legacy_compression_filter.cc \ src/core/ext/filters/http/server/http_server_filter.cc \ src/core/ext/filters/message_size/message_size_filter.cc \ src/core/ext/filters/rbac/rbac_filter.cc \ @@ -750,7 +749,6 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/security/security_connector/ssl_utils.cc \ src/core/lib/security/security_connector/tls/tls_security_connector.cc \ src/core/lib/security/transport/client_auth_filter.cc \ - src/core/lib/security/transport/legacy_server_auth_filter.cc \ src/core/lib/security/transport/secure_endpoint.cc \ src/core/lib/security/transport/security_handshaker.cc \ src/core/lib/security/transport/server_auth_filter.cc \ diff --git a/config.w32 b/config.w32 index 0dea3cdcccf..59a90ab91d3 100644 --- a/config.w32 +++ b/config.w32 @@ -36,7 +36,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\filters\\http\\client_authority_filter.cc " + "src\\core\\ext\\filters\\http\\http_filters_plugin.cc " + "src\\core\\ext\\filters\\http\\message_compress\\compression_filter.cc " + - "src\\core\\ext\\filters\\http\\message_compress\\legacy_compression_filter.cc " + "src\\core\\ext\\filters\\http\\server\\http_server_filter.cc " + "src\\core\\ext\\filters\\message_size\\message_size_filter.cc " + "src\\core\\ext\\filters\\rbac\\rbac_filter.cc " + @@ -715,7 +714,6 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\security\\security_connector\\ssl_utils.cc " + "src\\core\\lib\\security\\security_connector\\tls\\tls_security_connector.cc " + "src\\core\\lib\\security\\transport\\client_auth_filter.cc " + - "src\\core\\lib\\security\\transport\\legacy_server_auth_filter.cc " + "src\\core\\lib\\security\\transport\\secure_endpoint.cc " + "src\\core\\lib\\security\\transport\\security_handshaker.cc " + "src\\core\\lib\\security\\transport\\server_auth_filter.cc " + diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index f34c7dfb704..464e93bf425 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -291,7 +291,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/http/client/http_client_filter.h', 'src/core/ext/filters/http/client_authority_filter.h', 'src/core/ext/filters/http/message_compress/compression_filter.h', - 'src/core/ext/filters/http/message_compress/legacy_compression_filter.h', 'src/core/ext/filters/http/server/http_server_filter.h', 'src/core/ext/filters/message_size/message_size_filter.h', 'src/core/ext/filters/rbac/rbac_filter.h', @@ -1576,7 +1575,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/http/client/http_client_filter.h', 'src/core/ext/filters/http/client_authority_filter.h', 'src/core/ext/filters/http/message_compress/compression_filter.h', - 'src/core/ext/filters/http/message_compress/legacy_compression_filter.h', 'src/core/ext/filters/http/server/http_server_filter.h', 'src/core/ext/filters/message_size/message_size_filter.h', 'src/core/ext/filters/rbac/rbac_filter.h', diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index cc5573b737d..ee0ac85226a 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -292,8 +292,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/http/http_filters_plugin.cc', 'src/core/ext/filters/http/message_compress/compression_filter.cc', 'src/core/ext/filters/http/message_compress/compression_filter.h', - 'src/core/ext/filters/http/message_compress/legacy_compression_filter.cc', - 'src/core/ext/filters/http/message_compress/legacy_compression_filter.h', 'src/core/ext/filters/http/server/http_server_filter.cc', 'src/core/ext/filters/http/server/http_server_filter.h', 'src/core/ext/filters/message_size/message_size_filter.cc', @@ -1854,7 +1852,6 @@ Pod::Spec.new do |s| 'src/core/lib/security/security_connector/tls/tls_security_connector.h', 'src/core/lib/security/transport/auth_filters.h', 'src/core/lib/security/transport/client_auth_filter.cc', - 'src/core/lib/security/transport/legacy_server_auth_filter.cc', 'src/core/lib/security/transport/secure_endpoint.cc', 'src/core/lib/security/transport/secure_endpoint.h', 'src/core/lib/security/transport/security_handshaker.cc', @@ -2379,7 +2376,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/http/client/http_client_filter.h', 'src/core/ext/filters/http/client_authority_filter.h', 'src/core/ext/filters/http/message_compress/compression_filter.h', - 'src/core/ext/filters/http/message_compress/legacy_compression_filter.h', 'src/core/ext/filters/http/server/http_server_filter.h', 'src/core/ext/filters/message_size/message_size_filter.h', 'src/core/ext/filters/rbac/rbac_filter.h', diff --git a/grpc.gemspec b/grpc.gemspec index 5a98949d12f..68bc87e6dfd 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -182,8 +182,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/filters/http/http_filters_plugin.cc ) s.files += %w( src/core/ext/filters/http/message_compress/compression_filter.cc ) s.files += %w( src/core/ext/filters/http/message_compress/compression_filter.h ) - s.files += %w( src/core/ext/filters/http/message_compress/legacy_compression_filter.cc ) - s.files += %w( src/core/ext/filters/http/message_compress/legacy_compression_filter.h ) s.files += %w( src/core/ext/filters/http/server/http_server_filter.cc ) s.files += %w( src/core/ext/filters/http/server/http_server_filter.h ) s.files += %w( src/core/ext/filters/message_size/message_size_filter.cc ) @@ -1744,7 +1742,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/security/security_connector/tls/tls_security_connector.h ) s.files += %w( src/core/lib/security/transport/auth_filters.h ) s.files += %w( src/core/lib/security/transport/client_auth_filter.cc ) - s.files += %w( src/core/lib/security/transport/legacy_server_auth_filter.cc ) s.files += %w( src/core/lib/security/transport/secure_endpoint.cc ) s.files += %w( src/core/lib/security/transport/secure_endpoint.h ) s.files += %w( src/core/lib/security/transport/security_handshaker.cc ) diff --git a/package.xml b/package.xml index d1634f03f43..f7d2d5fd26d 100644 --- a/package.xml +++ b/package.xml @@ -164,8 +164,6 @@ - - @@ -1726,7 +1724,6 @@ - diff --git a/src/core/ext/filters/http/http_filters_plugin.cc b/src/core/ext/filters/http/http_filters_plugin.cc index 52706560c75..b662737ebae 100644 --- a/src/core/ext/filters/http/http_filters_plugin.cc +++ b/src/core/ext/filters/http/http_filters_plugin.cc @@ -22,7 +22,6 @@ #include "src/core/ext/filters/http/client/http_client_filter.h" #include "src/core/ext/filters/http/message_compress/compression_filter.h" -#include "src/core/ext/filters/http/message_compress/legacy_compression_filter.h" #include "src/core/ext/filters/http/server/http_server_filter.h" #include "src/core/ext/filters/message_size/message_size_filter.h" #include "src/core/lib/channel/channel_args.h" @@ -40,40 +39,21 @@ bool IsBuildingHttpLikeTransport(const ChannelArgs& args) { } // namespace void RegisterHttpFilters(CoreConfiguration::Builder* builder) { - if (IsV3CompressionFilterEnabled()) { - builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL) - .If(IsBuildingHttpLikeTransport) - .After() - .After(); - builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL) - .If(IsBuildingHttpLikeTransport) - .After() - .After(); - builder->channel_init() - ->RegisterFilter(GRPC_SERVER_CHANNEL) - .If(IsBuildingHttpLikeTransport) - .After() - .After(); - } else { - builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL) - .If(IsBuildingHttpLikeTransport) - .After() - .After(); - builder->channel_init() - ->RegisterFilter( - GRPC_CLIENT_DIRECT_CHANNEL) - .If(IsBuildingHttpLikeTransport) - .After() - .After(); - builder->channel_init() - ->RegisterFilter(GRPC_SERVER_CHANNEL) - .If(IsBuildingHttpLikeTransport) - .After() - .After(); - } + builder->channel_init() + ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL) + .If(IsBuildingHttpLikeTransport) + .After() + .After(); + builder->channel_init() + ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL) + .If(IsBuildingHttpLikeTransport) + .After() + .After(); + builder->channel_init() + ->RegisterFilter(GRPC_SERVER_CHANNEL) + .If(IsBuildingHttpLikeTransport) + .After() + .After(); builder->channel_init() ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL) .If(IsBuildingHttpLikeTransport) diff --git a/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc b/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc deleted file mode 100644 index 9fe6746a48d..00000000000 --- a/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2022 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include - -#include "src/core/ext/filters/http/message_compress/legacy_compression_filter.h" - -#include - -#include -#include -#include - -#include "absl/status/status.h" -#include "absl/strings/str_cat.h" -#include "absl/strings/str_format.h" -#include "absl/types/optional.h" - -#include -#include -#include -#include -#include - -#include "src/core/ext/filters/message_size/message_size_filter.h" -#include "src/core/lib/channel/call_tracer.h" -#include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/channel/context.h" -#include "src/core/lib/channel/promise_based_filter.h" -#include "src/core/lib/compression/compression_internal.h" -#include "src/core/lib/compression/message_compress.h" -#include "src/core/lib/debug/trace.h" -#include "src/core/lib/promise/activity.h" -#include "src/core/lib/promise/context.h" -#include "src/core/lib/promise/latch.h" -#include "src/core/lib/promise/pipe.h" -#include "src/core/lib/promise/prioritized_race.h" -#include "src/core/lib/resource_quota/arena.h" -#include "src/core/lib/slice/slice_buffer.h" -#include "src/core/lib/surface/call.h" -#include "src/core/lib/surface/call_trace.h" -#include "src/core/lib/transport/metadata_batch.h" -#include "src/core/lib/transport/transport.h" - -namespace grpc_core { - -const grpc_channel_filter LegacyClientCompressionFilter::kFilter = - MakePromiseBasedFilter< - LegacyClientCompressionFilter, FilterEndpoint::kClient, - kFilterExaminesServerInitialMetadata | kFilterExaminesInboundMessages | - kFilterExaminesOutboundMessages>("compression"); -const grpc_channel_filter LegacyServerCompressionFilter::kFilter = - MakePromiseBasedFilter< - LegacyServerCompressionFilter, FilterEndpoint::kServer, - kFilterExaminesServerInitialMetadata | kFilterExaminesInboundMessages | - kFilterExaminesOutboundMessages>("compression"); - -absl::StatusOr -LegacyClientCompressionFilter::Create(const ChannelArgs& args, - ChannelFilter::Args) { - return LegacyClientCompressionFilter(args); -} - -absl::StatusOr -LegacyServerCompressionFilter::Create(const ChannelArgs& args, - ChannelFilter::Args) { - return LegacyServerCompressionFilter(args); -} - -LegacyCompressionFilter::LegacyCompressionFilter(const ChannelArgs& args) - : max_recv_size_(GetMaxRecvSizeFromChannelArgs(args)), - message_size_service_config_parser_index_( - MessageSizeParser::ParserIndex()), - default_compression_algorithm_( - DefaultCompressionAlgorithmFromChannelArgs(args).value_or( - GRPC_COMPRESS_NONE)), - enabled_compression_algorithms_( - CompressionAlgorithmSet::FromChannelArgs(args)), - enable_compression_( - args.GetBool(GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION).value_or(true)), - enable_decompression_( - args.GetBool(GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION) - .value_or(true)) { - // Make sure the default is enabled. - if (!enabled_compression_algorithms_.IsSet(default_compression_algorithm_)) { - const char* name; - if (!grpc_compression_algorithm_name(default_compression_algorithm_, - &name)) { - name = ""; - } - gpr_log(GPR_ERROR, - "default compression algorithm %s not enabled: switching to none", - name); - default_compression_algorithm_ = GRPC_COMPRESS_NONE; - } -} - -MessageHandle LegacyCompressionFilter::CompressMessage( - MessageHandle message, grpc_compression_algorithm algorithm) const { - if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) { - gpr_log(GPR_INFO, "CompressMessage: len=%" PRIdPTR " alg=%d flags=%d", - message->payload()->Length(), algorithm, message->flags()); - } - auto* call_context = GetContext(); - auto* call_tracer = static_cast( - call_context[GRPC_CONTEXT_CALL_TRACER].value); - if (call_tracer != nullptr) { - call_tracer->RecordSendMessage(*message->payload()); - } - // Check if we're allowed to compress this message - // (apps might want to disable compression for certain messages to avoid - // crime/beast like vulns). - uint32_t& flags = message->mutable_flags(); - if (algorithm == GRPC_COMPRESS_NONE || !enable_compression_ || - (flags & (GRPC_WRITE_NO_COMPRESS | GRPC_WRITE_INTERNAL_COMPRESS))) { - return message; - } - // Try to compress the payload. - SliceBuffer tmp; - SliceBuffer* payload = message->payload(); - bool did_compress = grpc_msg_compress(algorithm, payload->c_slice_buffer(), - tmp.c_slice_buffer()); - // If we achieved compression send it as compressed, otherwise send it as (to - // avoid spending cycles on the receiver decompressing). - if (did_compress) { - if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) { - const char* algo_name; - const size_t before_size = payload->Length(); - const size_t after_size = tmp.Length(); - const float savings_ratio = 1.0f - static_cast(after_size) / - static_cast(before_size); - GPR_ASSERT(grpc_compression_algorithm_name(algorithm, &algo_name)); - gpr_log(GPR_INFO, - "Compressed[%s] %" PRIuPTR " bytes vs. %" PRIuPTR - " bytes (%.2f%% savings)", - algo_name, before_size, after_size, 100 * savings_ratio); - } - tmp.Swap(payload); - flags |= GRPC_WRITE_INTERNAL_COMPRESS; - if (call_tracer != nullptr) { - call_tracer->RecordSendCompressedMessage(*message->payload()); - } - } else { - if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) { - const char* algo_name; - GPR_ASSERT(grpc_compression_algorithm_name(algorithm, &algo_name)); - gpr_log(GPR_INFO, - "Algorithm '%s' enabled but decided not to compress. Input size: " - "%" PRIuPTR, - algo_name, payload->Length()); - } - } - return message; -} - -absl::StatusOr LegacyCompressionFilter::DecompressMessage( - bool is_client, MessageHandle message, DecompressArgs args) const { - if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) { - gpr_log(GPR_INFO, "DecompressMessage: len=%" PRIdPTR " max=%d alg=%d", - message->payload()->Length(), - args.max_recv_message_length.value_or(-1), args.algorithm); - } - auto* call_context = GetContext(); - auto* call_tracer = static_cast( - call_context[GRPC_CONTEXT_CALL_TRACER].value); - if (call_tracer != nullptr) { - call_tracer->RecordReceivedMessage(*message->payload()); - } - // Check max message length. - if (args.max_recv_message_length.has_value() && - message->payload()->Length() > - static_cast(*args.max_recv_message_length)) { - return absl::ResourceExhaustedError(absl::StrFormat( - "%s: Received message larger than max (%u vs. %d)", - is_client ? "CLIENT" : "SERVER", message->payload()->Length(), - *args.max_recv_message_length)); - } - // Check if decompression is enabled (if not, we can just pass the message - // up). - if (!enable_decompression_ || - (message->flags() & GRPC_WRITE_INTERNAL_COMPRESS) == 0) { - return std::move(message); - } - // Try to decompress the payload. - SliceBuffer decompressed_slices; - if (grpc_msg_decompress(args.algorithm, message->payload()->c_slice_buffer(), - decompressed_slices.c_slice_buffer()) == 0) { - return absl::InternalError( - absl::StrCat("Unexpected error decompressing data for algorithm ", - CompressionAlgorithmAsString(args.algorithm))); - } - // Swap the decompressed slices into the message. - message->payload()->Swap(&decompressed_slices); - message->mutable_flags() &= ~GRPC_WRITE_INTERNAL_COMPRESS; - message->mutable_flags() |= GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED; - if (call_tracer != nullptr) { - call_tracer->RecordReceivedDecompressedMessage(*message->payload()); - } - return std::move(message); -} - -grpc_compression_algorithm LegacyCompressionFilter::HandleOutgoingMetadata( - grpc_metadata_batch& outgoing_metadata) { - const auto algorithm = outgoing_metadata.Take(GrpcInternalEncodingRequest()) - .value_or(default_compression_algorithm()); - // Convey supported compression algorithms. - outgoing_metadata.Set(GrpcAcceptEncodingMetadata(), - enabled_compression_algorithms()); - if (algorithm != GRPC_COMPRESS_NONE) { - outgoing_metadata.Set(GrpcEncodingMetadata(), algorithm); - } - return algorithm; -} - -LegacyCompressionFilter::DecompressArgs -LegacyCompressionFilter::HandleIncomingMetadata( - const grpc_metadata_batch& incoming_metadata) { - // Configure max receive size. - auto max_recv_message_length = max_recv_size_; - const MessageSizeParsedConfig* limits = - MessageSizeParsedConfig::GetFromCallContext( - GetContext(), - message_size_service_config_parser_index_); - if (limits != nullptr && limits->max_recv_size().has_value() && - (!max_recv_message_length.has_value() || - *limits->max_recv_size() < *max_recv_message_length)) { - max_recv_message_length = *limits->max_recv_size(); - } - return DecompressArgs{incoming_metadata.get(GrpcEncodingMetadata()) - .value_or(GRPC_COMPRESS_NONE), - max_recv_message_length}; -} - -ArenaPromise -LegacyClientCompressionFilter::MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) { - auto compression_algorithm = - HandleOutgoingMetadata(*call_args.client_initial_metadata); - call_args.client_to_server_messages->InterceptAndMap( - [compression_algorithm, - this](MessageHandle message) -> absl::optional { - return CompressMessage(std::move(message), compression_algorithm); - }); - auto* decompress_args = GetContext()->New( - DecompressArgs{GRPC_COMPRESS_ALGORITHMS_COUNT, absl::nullopt}); - auto* decompress_err = - GetContext()->New>(); - call_args.server_initial_metadata->InterceptAndMap( - [decompress_args, this](ServerMetadataHandle server_initial_metadata) - -> absl::optional { - if (server_initial_metadata == nullptr) return absl::nullopt; - *decompress_args = HandleIncomingMetadata(*server_initial_metadata); - return std::move(server_initial_metadata); - }); - call_args.server_to_client_messages->InterceptAndMap( - [decompress_err, decompress_args, - this](MessageHandle message) -> absl::optional { - auto r = DecompressMessage(/*is_client=*/true, std::move(message), - *decompress_args); - if (!r.ok()) { - decompress_err->Set(ServerMetadataFromStatus(r.status())); - return absl::nullopt; - } - return std::move(*r); - }); - // Run the next filter, and race it with getting an error from decompression. - return PrioritizedRace(decompress_err->Wait(), - next_promise_factory(std::move(call_args))); -} - -ArenaPromise -LegacyServerCompressionFilter::MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) { - auto decompress_args = - HandleIncomingMetadata(*call_args.client_initial_metadata); - auto* decompress_err = - GetContext()->New>(); - call_args.client_to_server_messages->InterceptAndMap( - [decompress_err, decompress_args, - this](MessageHandle message) -> absl::optional { - auto r = DecompressMessage(/*is_client=*/false, std::move(message), - decompress_args); - if (grpc_call_trace.enabled()) { - gpr_log(GPR_DEBUG, "%s[compression] DecompressMessage returned %s", - GetContext()->DebugTag().c_str(), - r.status().ToString().c_str()); - } - if (!r.ok()) { - decompress_err->Set(ServerMetadataFromStatus(r.status())); - return absl::nullopt; - } - return std::move(*r); - }); - auto* compression_algorithm = - GetContext()->New(); - call_args.server_initial_metadata->InterceptAndMap( - [this, compression_algorithm](ServerMetadataHandle md) { - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%s[compression] Write metadata", - GetContext()->DebugTag().c_str()); - } - // Find the compression algorithm. - *compression_algorithm = HandleOutgoingMetadata(*md); - return md; - }); - call_args.server_to_client_messages->InterceptAndMap( - [compression_algorithm, - this](MessageHandle message) -> absl::optional { - return CompressMessage(std::move(message), *compression_algorithm); - }); - // Run the next filter, and race it with getting an error from decompression. - return PrioritizedRace(decompress_err->Wait(), - next_promise_factory(std::move(call_args))); -} - -} // namespace grpc_core diff --git a/src/core/ext/filters/http/message_compress/legacy_compression_filter.h b/src/core/ext/filters/http/message_compress/legacy_compression_filter.h deleted file mode 100644 index f2212e2d61c..00000000000 --- a/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +++ /dev/null @@ -1,140 +0,0 @@ -// -// -// Copyright 2020 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -#ifndef GRPC_SRC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_LEGACY_COMPRESSION_FILTER_H -#define GRPC_SRC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_LEGACY_COMPRESSION_FILTER_H - -#include - -#include -#include - -#include "absl/status/statusor.h" -#include "absl/types/optional.h" - -#include - -#include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channel_fwd.h" -#include "src/core/lib/channel/promise_based_filter.h" -#include "src/core/lib/compression/compression_internal.h" -#include "src/core/lib/promise/arena_promise.h" -#include "src/core/lib/transport/metadata_batch.h" -#include "src/core/lib/transport/transport.h" - -namespace grpc_core { - -/// Compression filter for messages. -/// -/// See for the available compression settings. -/// -/// Compression settings may come from: -/// - Channel configuration, as established at channel creation time. -/// - The metadata accompanying the outgoing data to be compressed. This is -/// taken as a request only. We may choose not to honor it. The metadata key -/// is given by \a GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY. -/// -/// Compression can be disabled for concrete messages (for instance in order to -/// prevent CRIME/BEAST type attacks) by having the GRPC_WRITE_NO_COMPRESS set -/// in the MessageHandle flags. -/// -/// The attempted compression mechanism is added to the resulting initial -/// metadata under the 'grpc-encoding' key. -/// -/// If compression is actually performed, the MessageHandle's flag is modified -/// to incorporate GRPC_WRITE_INTERNAL_COMPRESS. Otherwise, and regardless of -/// the aforementioned 'grpc-encoding' metadata value, data will pass through -/// uncompressed. - -class LegacyCompressionFilter : public ChannelFilter { - protected: - struct DecompressArgs { - grpc_compression_algorithm algorithm; - absl::optional max_recv_message_length; - }; - - explicit LegacyCompressionFilter(const ChannelArgs& args); - - grpc_compression_algorithm default_compression_algorithm() const { - return default_compression_algorithm_; - } - - CompressionAlgorithmSet enabled_compression_algorithms() const { - return enabled_compression_algorithms_; - } - - grpc_compression_algorithm HandleOutgoingMetadata( - grpc_metadata_batch& outgoing_metadata); - DecompressArgs HandleIncomingMetadata( - const grpc_metadata_batch& incoming_metadata); - - // Compress one message synchronously. - MessageHandle CompressMessage(MessageHandle message, - grpc_compression_algorithm algorithm) const; - // Decompress one message synchronously. - absl::StatusOr DecompressMessage(bool is_client, - MessageHandle message, - DecompressArgs args) const; - - private: - // Max receive message length, if set. - absl::optional max_recv_size_; - size_t message_size_service_config_parser_index_; - // The default, channel-level, compression algorithm. - grpc_compression_algorithm default_compression_algorithm_; - // Enabled compression algorithms. - CompressionAlgorithmSet enabled_compression_algorithms_; - // Is compression enabled? - bool enable_compression_; - // Is decompression enabled? - bool enable_decompression_; -}; - -class LegacyClientCompressionFilter final : public LegacyCompressionFilter { - public: - static const grpc_channel_filter kFilter; - - static absl::StatusOr Create( - const ChannelArgs& args, ChannelFilter::Args filter_args); - - // Construct a promise for one call. - ArenaPromise MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) override; - - private: - using LegacyCompressionFilter::LegacyCompressionFilter; -}; - -class LegacyServerCompressionFilter final : public LegacyCompressionFilter { - public: - static const grpc_channel_filter kFilter; - - static absl::StatusOr Create( - const ChannelArgs& args, ChannelFilter::Args filter_args); - - // Construct a promise for one call. - ArenaPromise MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) override; - - private: - using LegacyCompressionFilter::LegacyCompressionFilter; -}; - -} // namespace grpc_core - -#endif // GRPC_SRC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_LEGACY_COMPRESSION_FILTER_H diff --git a/src/core/lib/experiments/experiments.cc b/src/core/lib/experiments/experiments.cc index 41307cf8843..6291a17bfd9 100644 --- a/src/core/lib/experiments/experiments.cc +++ b/src/core/lib/experiments/experiments.cc @@ -142,12 +142,6 @@ const char* const additional_constraints_v3_backend_metric_filter = "{}"; const char* const description_v3_channel_idle_filters = "Use the v3 filter API version of the idle filters."; const char* const additional_constraints_v3_channel_idle_filters = "{}"; -const char* const description_v3_compression_filter = - "Use the compression filter utilizing the v3 filter api"; -const char* const additional_constraints_v3_compression_filter = "{}"; -const char* const description_v3_server_auth_filter = - "Use the server auth filter utilizing the v3 filter api"; -const char* const additional_constraints_v3_server_auth_filter = "{}"; const char* const description_work_serializer_clears_time_cache = "Have the work serializer clear the time cache when it dispatches work."; const char* const additional_constraints_work_serializer_clears_time_cache = @@ -241,10 +235,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_v3_backend_metric_filter, nullptr, 0, false, true}, {"v3_channel_idle_filters", description_v3_channel_idle_filters, additional_constraints_v3_channel_idle_filters, nullptr, 0, false, true}, - {"v3_compression_filter", description_v3_compression_filter, - additional_constraints_v3_compression_filter, nullptr, 0, false, true}, - {"v3_server_auth_filter", description_v3_server_auth_filter, - additional_constraints_v3_server_auth_filter, nullptr, 0, false, true}, {"work_serializer_clears_time_cache", description_work_serializer_clears_time_cache, additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true, @@ -376,12 +366,6 @@ const char* const additional_constraints_v3_backend_metric_filter = "{}"; const char* const description_v3_channel_idle_filters = "Use the v3 filter API version of the idle filters."; const char* const additional_constraints_v3_channel_idle_filters = "{}"; -const char* const description_v3_compression_filter = - "Use the compression filter utilizing the v3 filter api"; -const char* const additional_constraints_v3_compression_filter = "{}"; -const char* const description_v3_server_auth_filter = - "Use the server auth filter utilizing the v3 filter api"; -const char* const additional_constraints_v3_server_auth_filter = "{}"; const char* const description_work_serializer_clears_time_cache = "Have the work serializer clear the time cache when it dispatches work."; const char* const additional_constraints_work_serializer_clears_time_cache = @@ -475,10 +459,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_v3_backend_metric_filter, nullptr, 0, false, true}, {"v3_channel_idle_filters", description_v3_channel_idle_filters, additional_constraints_v3_channel_idle_filters, nullptr, 0, false, true}, - {"v3_compression_filter", description_v3_compression_filter, - additional_constraints_v3_compression_filter, nullptr, 0, false, true}, - {"v3_server_auth_filter", description_v3_server_auth_filter, - additional_constraints_v3_server_auth_filter, nullptr, 0, false, true}, {"work_serializer_clears_time_cache", description_work_serializer_clears_time_cache, additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true, @@ -610,12 +590,6 @@ const char* const additional_constraints_v3_backend_metric_filter = "{}"; const char* const description_v3_channel_idle_filters = "Use the v3 filter API version of the idle filters."; const char* const additional_constraints_v3_channel_idle_filters = "{}"; -const char* const description_v3_compression_filter = - "Use the compression filter utilizing the v3 filter api"; -const char* const additional_constraints_v3_compression_filter = "{}"; -const char* const description_v3_server_auth_filter = - "Use the server auth filter utilizing the v3 filter api"; -const char* const additional_constraints_v3_server_auth_filter = "{}"; const char* const description_work_serializer_clears_time_cache = "Have the work serializer clear the time cache when it dispatches work."; const char* const additional_constraints_work_serializer_clears_time_cache = @@ -709,10 +683,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_v3_backend_metric_filter, nullptr, 0, false, true}, {"v3_channel_idle_filters", description_v3_channel_idle_filters, additional_constraints_v3_channel_idle_filters, nullptr, 0, false, true}, - {"v3_compression_filter", description_v3_compression_filter, - additional_constraints_v3_compression_filter, nullptr, 0, false, true}, - {"v3_server_auth_filter", description_v3_server_auth_filter, - additional_constraints_v3_server_auth_filter, nullptr, 0, false, true}, {"work_serializer_clears_time_cache", description_work_serializer_clears_time_cache, additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true, diff --git a/src/core/lib/experiments/experiments.h b/src/core/lib/experiments/experiments.h index 90e66aee6f5..7cc6dc46c38 100644 --- a/src/core/lib/experiments/experiments.h +++ b/src/core/lib/experiments/experiments.h @@ -101,8 +101,6 @@ inline bool IsTraceRecordCallopsEnabled() { return false; } inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; } inline bool IsV3BackendMetricFilterEnabled() { return false; } inline bool IsV3ChannelIdleFiltersEnabled() { return false; } -inline bool IsV3CompressionFilterEnabled() { return false; } -inline bool IsV3ServerAuthFilterEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE inline bool IsWorkSerializerClearsTimeCacheEnabled() { return true; } inline bool IsWorkSerializerDispatchEnabled() { return false; } @@ -153,8 +151,6 @@ inline bool IsTraceRecordCallopsEnabled() { return false; } inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; } inline bool IsV3BackendMetricFilterEnabled() { return false; } inline bool IsV3ChannelIdleFiltersEnabled() { return false; } -inline bool IsV3CompressionFilterEnabled() { return false; } -inline bool IsV3ServerAuthFilterEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE inline bool IsWorkSerializerClearsTimeCacheEnabled() { return true; } inline bool IsWorkSerializerDispatchEnabled() { return false; } @@ -206,8 +202,6 @@ inline bool IsTraceRecordCallopsEnabled() { return false; } inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; } inline bool IsV3BackendMetricFilterEnabled() { return false; } inline bool IsV3ChannelIdleFiltersEnabled() { return false; } -inline bool IsV3CompressionFilterEnabled() { return false; } -inline bool IsV3ServerAuthFilterEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE inline bool IsWorkSerializerClearsTimeCacheEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_DISPATCH @@ -246,8 +240,6 @@ enum ExperimentIds { kExperimentIdUnconstrainedMaxQuotaBufferSize, kExperimentIdV3BackendMetricFilter, kExperimentIdV3ChannelIdleFilters, - kExperimentIdV3CompressionFilter, - kExperimentIdV3ServerAuthFilter, kExperimentIdWorkSerializerClearsTimeCache, kExperimentIdWorkSerializerDispatch, kNumExperiments @@ -372,14 +364,6 @@ inline bool IsV3BackendMetricFilterEnabled() { inline bool IsV3ChannelIdleFiltersEnabled() { return IsExperimentEnabled(kExperimentIdV3ChannelIdleFilters); } -#define GRPC_EXPERIMENT_IS_INCLUDED_V3_COMPRESSION_FILTER -inline bool IsV3CompressionFilterEnabled() { - return IsExperimentEnabled(kExperimentIdV3CompressionFilter); -} -#define GRPC_EXPERIMENT_IS_INCLUDED_V3_SERVER_AUTH_FILTER -inline bool IsV3ServerAuthFilterEnabled() { - return IsExperimentEnabled(kExperimentIdV3ServerAuthFilter); -} #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE inline bool IsWorkSerializerClearsTimeCacheEnabled() { return IsExperimentEnabled(kExperimentIdWorkSerializerClearsTimeCache); diff --git a/src/core/lib/experiments/experiments.yaml b/src/core/lib/experiments/experiments.yaml index 1a9610018f0..bb6daa9e939 100644 --- a/src/core/lib/experiments/experiments.yaml +++ b/src/core/lib/experiments/experiments.yaml @@ -235,25 +235,13 @@ - name: v3_channel_idle_filters description: Use the v3 filter API version of the idle filters. - expiry: 2024/04/04 - owner: ctiller@google.com - test_tags: [] -- name: v3_compression_filter - description: - Use the compression filter utilizing the v3 filter api - expiry: 2024/04/04 - owner: ctiller@google.com - test_tags: ["compression_test"] -- name: v3_server_auth_filter - description: - Use the server auth filter utilizing the v3 filter api - expiry: 2024/04/04 + expiry: 2024/07/04 owner: ctiller@google.com test_tags: [] - name: work_serializer_clears_time_cache description: Have the work serializer clear the time cache when it dispatches work. - expiry: 2024/04/01 + expiry: 2024/07/01 owner: ctiller@google.com test_tags: [] - name: work_serializer_dispatch diff --git a/src/core/lib/security/transport/auth_filters.h b/src/core/lib/security/transport/auth_filters.h index 37b4e5bf0c4..7b7d1ab9d25 100644 --- a/src/core/lib/security/transport/auth_filters.h +++ b/src/core/lib/security/transport/auth_filters.h @@ -62,31 +62,6 @@ class ClientAuthFilter final : public ChannelFilter { grpc_call_credentials::GetRequestMetadataArgs args_; }; -class LegacyServerAuthFilter final : public ChannelFilter { - public: - static const grpc_channel_filter kFilter; - - static absl::StatusOr Create(const ChannelArgs& args, - ChannelFilter::Args); - - // Construct a promise for one call. - ArenaPromise MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) override; - - private: - LegacyServerAuthFilter( - RefCountedPtr server_credentials, - RefCountedPtr auth_context); - - class RunApplicationCode; - - ArenaPromise> GetCallCredsMetadata( - CallArgs call_args); - - RefCountedPtr server_credentials_; - RefCountedPtr auth_context_; -}; - class ServerAuthFilter final : public ImplementChannelFilter { private: ServerAuthFilter(RefCountedPtr server_credentials, diff --git a/src/core/lib/security/transport/legacy_server_auth_filter.cc b/src/core/lib/security/transport/legacy_server_auth_filter.cc deleted file mode 100644 index acb10ba0335..00000000000 --- a/src/core/lib/security/transport/legacy_server_auth_filter.cc +++ /dev/null @@ -1,244 +0,0 @@ -// -// -// Copyright 2015 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -#include - -#include -#include -#include -#include -#include -#include - -#include "absl/status/status.h" -#include "absl/status/statusor.h" - -#include -#include -#include -#include -#include - -#include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channel_fwd.h" -#include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/channel/context.h" -#include "src/core/lib/channel/promise_based_filter.h" -#include "src/core/lib/debug/trace.h" -#include "src/core/lib/gprpp/debug_location.h" -#include "src/core/lib/gprpp/ref_counted_ptr.h" -#include "src/core/lib/gprpp/status_helper.h" -#include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/promise/activity.h" -#include "src/core/lib/promise/arena_promise.h" -#include "src/core/lib/promise/context.h" -#include "src/core/lib/promise/poll.h" -#include "src/core/lib/promise/try_seq.h" -#include "src/core/lib/resource_quota/arena.h" -#include "src/core/lib/security/context/security_context.h" -#include "src/core/lib/security/credentials/credentials.h" -#include "src/core/lib/security/transport/auth_filters.h" // IWYU pragma: keep -#include "src/core/lib/slice/slice.h" -#include "src/core/lib/slice/slice_internal.h" -#include "src/core/lib/surface/call_trace.h" -#include "src/core/lib/transport/metadata_batch.h" -#include "src/core/lib/transport/transport.h" - -namespace grpc_core { - -const grpc_channel_filter LegacyServerAuthFilter::kFilter = - MakePromiseBasedFilter( - "server-auth"); - -namespace { - -class ArrayEncoder { - public: - explicit ArrayEncoder(grpc_metadata_array* result) : result_(result) {} - - void Encode(const Slice& key, const Slice& value) { - Append(key.Ref(), value.Ref()); - } - - template - void Encode(Which, const typename Which::ValueType& value) { - Append(Slice(StaticSlice::FromStaticString(Which::key())), - Slice(Which::Encode(value))); - } - - void Encode(HttpMethodMetadata, - const typename HttpMethodMetadata::ValueType&) {} - - private: - void Append(Slice key, Slice value) { - if (result_->count == result_->capacity) { - result_->capacity = - std::max(result_->capacity + 8, result_->capacity * 2); - result_->metadata = static_cast(gpr_realloc( - result_->metadata, result_->capacity * sizeof(grpc_metadata))); - } - auto* usr_md = &result_->metadata[result_->count++]; - usr_md->key = key.TakeCSlice(); - usr_md->value = value.TakeCSlice(); - } - - grpc_metadata_array* result_; -}; - -// TODO(ctiller): seek out all users of this functionality and change API so -// that this unilateral format conversion IS NOT REQUIRED. -grpc_metadata_array MetadataBatchToMetadataArray( - const grpc_metadata_batch* batch) { - grpc_metadata_array result; - grpc_metadata_array_init(&result); - ArrayEncoder encoder(&result); - batch->Encode(&encoder); - return result; -} - -} // namespace - -class LegacyServerAuthFilter::RunApplicationCode { - public: - // TODO(ctiller): Allocate state_ into a pool on the arena to reuse this - // memory later - RunApplicationCode(LegacyServerAuthFilter* filter, CallArgs call_args) - : state_(GetContext()->ManagedNew(std::move(call_args))) { - if (grpc_call_trace.enabled()) { - gpr_log(GPR_ERROR, - "%s[server-auth]: Delegate to application: filter=%p this=%p " - "auth_ctx=%p", - GetContext()->DebugTag().c_str(), filter, this, - filter->auth_context_.get()); - } - filter->server_credentials_->auth_metadata_processor().process( - filter->server_credentials_->auth_metadata_processor().state, - filter->auth_context_.get(), state_->md.metadata, state_->md.count, - OnMdProcessingDone, state_); - } - - RunApplicationCode(const RunApplicationCode&) = delete; - RunApplicationCode& operator=(const RunApplicationCode&) = delete; - RunApplicationCode(RunApplicationCode&& other) noexcept - : state_(std::exchange(other.state_, nullptr)) {} - RunApplicationCode& operator=(RunApplicationCode&& other) noexcept { - state_ = std::exchange(other.state_, nullptr); - return *this; - } - - Poll> operator()() { - if (state_->done.load(std::memory_order_acquire)) { - return Poll>(std::move(state_->call_args)); - } - return Pending{}; - } - - private: - struct State { - explicit State(CallArgs call_args) : call_args(std::move(call_args)) {} - Waker waker{GetContext()->MakeOwningWaker()}; - absl::StatusOr call_args; - grpc_metadata_array md = - MetadataBatchToMetadataArray(call_args->client_initial_metadata.get()); - std::atomic done{false}; - }; - - // Called from application code. - static void OnMdProcessingDone( - void* user_data, const grpc_metadata* consumed_md, size_t num_consumed_md, - const grpc_metadata* response_md, size_t num_response_md, - grpc_status_code status, const char* error_details) { - ApplicationCallbackExecCtx callback_exec_ctx; - ExecCtx exec_ctx; - - auto* state = static_cast(user_data); - - // TODO(ZhenLian): Implement support for response_md. - if (response_md != nullptr && num_response_md > 0) { - gpr_log(GPR_ERROR, - "response_md in auth metadata processing not supported for now. " - "Ignoring..."); - } - - if (status == GRPC_STATUS_OK) { - ClientMetadataHandle& md = state->call_args->client_initial_metadata; - for (size_t i = 0; i < num_consumed_md; i++) { - md->Remove(StringViewFromSlice(consumed_md[i].key)); - } - } else { - if (error_details == nullptr) { - error_details = "Authentication metadata processing failed."; - } - state->call_args = grpc_error_set_int( - absl::Status(static_cast(status), error_details), - StatusIntProperty::kRpcStatus, status); - } - - // Clean up. - for (size_t i = 0; i < state->md.count; i++) { - CSliceUnref(state->md.metadata[i].key); - CSliceUnref(state->md.metadata[i].value); - } - grpc_metadata_array_destroy(&state->md); - - auto waker = std::move(state->waker); - state->done.store(true, std::memory_order_release); - waker.Wakeup(); - } - - State* state_; -}; - -ArenaPromise LegacyServerAuthFilter::MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) { - // Create server security context. Set its auth context from channel - // data and save it in the call context. - grpc_server_security_context* server_ctx = - grpc_server_security_context_create(GetContext()); - server_ctx->auth_context = - auth_context_->Ref(DEBUG_LOCATION, "server_auth_filter"); - grpc_call_context_element& context = - GetContext()[GRPC_CONTEXT_SECURITY]; - if (context.value != nullptr) context.destroy(context.value); - context.value = server_ctx; - context.destroy = grpc_server_security_context_destroy; - - if (server_credentials_ == nullptr || - server_credentials_->auth_metadata_processor().process == nullptr) { - return next_promise_factory(std::move(call_args)); - } - - return TrySeq(RunApplicationCode(this, std::move(call_args)), - std::move(next_promise_factory)); -} - -LegacyServerAuthFilter::LegacyServerAuthFilter( - RefCountedPtr server_credentials, - RefCountedPtr auth_context) - : server_credentials_(server_credentials), auth_context_(auth_context) {} - -absl::StatusOr LegacyServerAuthFilter::Create( - const ChannelArgs& args, ChannelFilter::Args) { - auto auth_context = args.GetObjectRef(); - GPR_ASSERT(auth_context != nullptr); - auto creds = args.GetObjectRef(); - return LegacyServerAuthFilter(std::move(creds), std::move(auth_context)); -} - -} // namespace grpc_core diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 276bf5600ee..28c33b814d7 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -72,20 +72,13 @@ void RegisterSecurityFilters(CoreConfiguration::Builder* builder) { builder->channel_init() ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL) .IfHasChannelArg(GRPC_ARG_SECURITY_CONNECTOR); - if (IsV3ServerAuthFilterEnabled()) { - builder->channel_init() - ->RegisterFilter(GRPC_SERVER_CHANNEL) - .IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG); - } else { - builder->channel_init() - ->RegisterFilter(GRPC_SERVER_CHANNEL) - .IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG); - } + builder->channel_init() + ->RegisterFilter(GRPC_SERVER_CHANNEL) + .IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG); builder->channel_init() ->RegisterFilter(GRPC_SERVER_CHANNEL) .IfHasChannelArg(GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER) - .After() - .After(); + .After(); } } // namespace grpc_core diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index 76daef457eb..c09d7d8f0e5 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -45,7 +45,6 @@ CORE_SOURCE_FILES = [ 'src/core/ext/filters/http/client_authority_filter.cc', 'src/core/ext/filters/http/http_filters_plugin.cc', 'src/core/ext/filters/http/message_compress/compression_filter.cc', - 'src/core/ext/filters/http/message_compress/legacy_compression_filter.cc', 'src/core/ext/filters/http/server/http_server_filter.cc', 'src/core/ext/filters/message_size/message_size_filter.cc', 'src/core/ext/filters/rbac/rbac_filter.cc', @@ -724,7 +723,6 @@ CORE_SOURCE_FILES = [ 'src/core/lib/security/security_connector/ssl_utils.cc', 'src/core/lib/security/security_connector/tls/tls_security_connector.cc', 'src/core/lib/security/transport/client_auth_filter.cc', - 'src/core/lib/security/transport/legacy_server_auth_filter.cc', 'src/core/lib/security/transport/secure_endpoint.cc', 'src/core/lib/security/transport/security_handshaker.cc', 'src/core/lib/security/transport/server_auth_filter.cc', diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index b09d01edc46..645e33ea544 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -1142,8 +1142,6 @@ src/core/ext/filters/http/client_authority_filter.h \ src/core/ext/filters/http/http_filters_plugin.cc \ src/core/ext/filters/http/message_compress/compression_filter.cc \ src/core/ext/filters/http/message_compress/compression_filter.h \ -src/core/ext/filters/http/message_compress/legacy_compression_filter.cc \ -src/core/ext/filters/http/message_compress/legacy_compression_filter.h \ src/core/ext/filters/http/server/http_server_filter.cc \ src/core/ext/filters/http/server/http_server_filter.h \ src/core/ext/filters/message_size/message_size_filter.cc \ @@ -2743,7 +2741,6 @@ src/core/lib/security/security_connector/tls/tls_security_connector.cc \ src/core/lib/security/security_connector/tls/tls_security_connector.h \ src/core/lib/security/transport/auth_filters.h \ src/core/lib/security/transport/client_auth_filter.cc \ -src/core/lib/security/transport/legacy_server_auth_filter.cc \ src/core/lib/security/transport/secure_endpoint.cc \ src/core/lib/security/transport/secure_endpoint.h \ src/core/lib/security/transport/security_handshaker.cc \ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index cea615a2f53..25e3169b103 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -947,8 +947,6 @@ src/core/ext/filters/http/client_authority_filter.h \ src/core/ext/filters/http/http_filters_plugin.cc \ src/core/ext/filters/http/message_compress/compression_filter.cc \ src/core/ext/filters/http/message_compress/compression_filter.h \ -src/core/ext/filters/http/message_compress/legacy_compression_filter.cc \ -src/core/ext/filters/http/message_compress/legacy_compression_filter.h \ src/core/ext/filters/http/server/http_server_filter.cc \ src/core/ext/filters/http/server/http_server_filter.h \ src/core/ext/filters/message_size/message_size_filter.cc \ @@ -2518,7 +2516,6 @@ src/core/lib/security/security_connector/tls/tls_security_connector.cc \ src/core/lib/security/security_connector/tls/tls_security_connector.h \ src/core/lib/security/transport/auth_filters.h \ src/core/lib/security/transport/client_auth_filter.cc \ -src/core/lib/security/transport/legacy_server_auth_filter.cc \ src/core/lib/security/transport/secure_endpoint.cc \ src/core/lib/security/transport/secure_endpoint.h \ src/core/lib/security/transport/security_handshaker.cc \