[experiments] Remove some, extend some (#36166)
Remove rolled out experiments v3_compression_filter, v3_server_auth_filter; Extend WIP v3_channel_idle_filter for a bit, and extend work_serializer_clears_time_cache until OSS issues with work_serializer_dispatch are resolved.
Closes #36166
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36166 from ctiller:updat3 2c7223f63b
PiperOrigin-RevId: 619057925
This commit is contained in:
parent
c54c69dcdd
commit
ca478bd429
3
BUILD
3
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 = [
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 " +
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
|
|
|
|||
|
|
@ -164,8 +164,6 @@
|
|||
<file baseinstalldir="/" name="src/core/ext/filters/http/http_filters_plugin.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/http/message_compress/compression_filter.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/http/message_compress/compression_filter.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/http/message_compress/legacy_compression_filter.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/http/message_compress/legacy_compression_filter.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/http/server/http_server_filter.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/http/server/http_server_filter.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/ext/filters/message_size/message_size_filter.cc" role="src" />
|
||||
|
|
@ -1726,7 +1724,6 @@
|
|||
<file baseinstalldir="/" name="src/core/lib/security/security_connector/tls/tls_security_connector.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/security/transport/auth_filters.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/security/transport/client_auth_filter.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/security/transport/legacy_server_auth_filter.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/security/transport/secure_endpoint.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/security/transport/secure_endpoint.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/security/transport/security_handshaker.cc" role="src" />
|
||||
|
|
|
|||
|
|
@ -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<ClientCompressionFilter>(GRPC_CLIENT_SUBCHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpClientFilter>()
|
||||
.After<ClientMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ClientCompressionFilter>(GRPC_CLIENT_DIRECT_CHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpClientFilter>()
|
||||
.After<ClientMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ServerCompressionFilter>(GRPC_SERVER_CHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpServerFilter>()
|
||||
.After<ServerMessageSizeFilter>();
|
||||
} else {
|
||||
builder->channel_init()
|
||||
->RegisterFilter<LegacyClientCompressionFilter>(GRPC_CLIENT_SUBCHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpClientFilter>()
|
||||
.After<ClientMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<LegacyClientCompressionFilter>(
|
||||
GRPC_CLIENT_DIRECT_CHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpClientFilter>()
|
||||
.After<ClientMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<LegacyServerCompressionFilter>(GRPC_SERVER_CHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpServerFilter>()
|
||||
.After<ServerMessageSizeFilter>();
|
||||
}
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ClientCompressionFilter>(GRPC_CLIENT_SUBCHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpClientFilter>()
|
||||
.After<ClientMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ClientCompressionFilter>(GRPC_CLIENT_DIRECT_CHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpClientFilter>()
|
||||
.After<ClientMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ServerCompressionFilter>(GRPC_SERVER_CHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
.After<HttpServerFilter>()
|
||||
.After<ServerMessageSizeFilter>();
|
||||
builder->channel_init()
|
||||
->RegisterFilter<HttpClientFilter>(GRPC_CLIENT_SUBCHANNEL)
|
||||
.If(IsBuildingHttpLikeTransport)
|
||||
|
|
|
|||
|
|
@ -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 <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/http/message_compress/legacy_compression_filter.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/strings/str_cat.h"
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "absl/types/optional.h"
|
||||
|
||||
#include <grpc/compression.h>
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpc/impl/channel_arg_names.h>
|
||||
#include <grpc/impl/compression_types.h>
|
||||
#include <grpc/support/log.h>
|
||||
|
||||
#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>
|
||||
LegacyClientCompressionFilter::Create(const ChannelArgs& args,
|
||||
ChannelFilter::Args) {
|
||||
return LegacyClientCompressionFilter(args);
|
||||
}
|
||||
|
||||
absl::StatusOr<LegacyServerCompressionFilter>
|
||||
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 = "<unknown>";
|
||||
}
|
||||
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<grpc_call_context_element>();
|
||||
auto* call_tracer = static_cast<CallTracerInterface*>(
|
||||
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<float>(after_size) /
|
||||
static_cast<float>(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<MessageHandle> 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<grpc_call_context_element>();
|
||||
auto* call_tracer = static_cast<CallTracerInterface*>(
|
||||
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<size_t>(*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<grpc_call_context_element>(),
|
||||
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<ServerMetadataHandle>
|
||||
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<MessageHandle> {
|
||||
return CompressMessage(std::move(message), compression_algorithm);
|
||||
});
|
||||
auto* decompress_args = GetContext<Arena>()->New<DecompressArgs>(
|
||||
DecompressArgs{GRPC_COMPRESS_ALGORITHMS_COUNT, absl::nullopt});
|
||||
auto* decompress_err =
|
||||
GetContext<Arena>()->New<Latch<ServerMetadataHandle>>();
|
||||
call_args.server_initial_metadata->InterceptAndMap(
|
||||
[decompress_args, this](ServerMetadataHandle server_initial_metadata)
|
||||
-> absl::optional<ServerMetadataHandle> {
|
||||
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<MessageHandle> {
|
||||
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<ServerMetadataHandle>
|
||||
LegacyServerCompressionFilter::MakeCallPromise(
|
||||
CallArgs call_args, NextPromiseFactory next_promise_factory) {
|
||||
auto decompress_args =
|
||||
HandleIncomingMetadata(*call_args.client_initial_metadata);
|
||||
auto* decompress_err =
|
||||
GetContext<Arena>()->New<Latch<ServerMetadataHandle>>();
|
||||
call_args.client_to_server_messages->InterceptAndMap(
|
||||
[decompress_err, decompress_args,
|
||||
this](MessageHandle message) -> absl::optional<MessageHandle> {
|
||||
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<Activity>()->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<Arena>()->New<grpc_compression_algorithm>();
|
||||
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<Activity>()->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<MessageHandle> {
|
||||
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
|
||||
|
|
@ -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 <grpc/support/port_platform.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "absl/status/statusor.h"
|
||||
#include "absl/types/optional.h"
|
||||
|
||||
#include <grpc/impl/compression_types.h>
|
||||
|
||||
#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 <grpc/compression.h> 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<uint32_t> 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<MessageHandle> DecompressMessage(bool is_client,
|
||||
MessageHandle message,
|
||||
DecompressArgs args) const;
|
||||
|
||||
private:
|
||||
// Max receive message length, if set.
|
||||
absl::optional<uint32_t> 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<LegacyClientCompressionFilter> Create(
|
||||
const ChannelArgs& args, ChannelFilter::Args filter_args);
|
||||
|
||||
// Construct a promise for one call.
|
||||
ArenaPromise<ServerMetadataHandle> 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<LegacyServerCompressionFilter> Create(
|
||||
const ChannelArgs& args, ChannelFilter::Args filter_args);
|
||||
|
||||
// Construct a promise for one call.
|
||||
ArenaPromise<ServerMetadataHandle> 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
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<LegacyServerAuthFilter> Create(const ChannelArgs& args,
|
||||
ChannelFilter::Args);
|
||||
|
||||
// Construct a promise for one call.
|
||||
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
||||
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
||||
|
||||
private:
|
||||
LegacyServerAuthFilter(
|
||||
RefCountedPtr<grpc_server_credentials> server_credentials,
|
||||
RefCountedPtr<grpc_auth_context> auth_context);
|
||||
|
||||
class RunApplicationCode;
|
||||
|
||||
ArenaPromise<absl::StatusOr<CallArgs>> GetCallCredsMetadata(
|
||||
CallArgs call_args);
|
||||
|
||||
RefCountedPtr<grpc_server_credentials> server_credentials_;
|
||||
RefCountedPtr<grpc_auth_context> auth_context_;
|
||||
};
|
||||
|
||||
class ServerAuthFilter final : public ImplementChannelFilter<ServerAuthFilter> {
|
||||
private:
|
||||
ServerAuthFilter(RefCountedPtr<grpc_server_credentials> server_credentials,
|
||||
|
|
|
|||
|
|
@ -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 <grpc/support/port_platform.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/status/statusor.h"
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpc/grpc_security.h>
|
||||
#include <grpc/status.h>
|
||||
#include <grpc/support/alloc.h>
|
||||
#include <grpc/support/log.h>
|
||||
|
||||
#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<LegacyServerAuthFilter, FilterEndpoint::kServer>(
|
||||
"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 <typename Which>
|
||||
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<grpc_metadata*>(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<Arena>()->ManagedNew<State>(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<Activity>()->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<absl::StatusOr<CallArgs>> operator()() {
|
||||
if (state_->done.load(std::memory_order_acquire)) {
|
||||
return Poll<absl::StatusOr<CallArgs>>(std::move(state_->call_args));
|
||||
}
|
||||
return Pending{};
|
||||
}
|
||||
|
||||
private:
|
||||
struct State {
|
||||
explicit State(CallArgs call_args) : call_args(std::move(call_args)) {}
|
||||
Waker waker{GetContext<Activity>()->MakeOwningWaker()};
|
||||
absl::StatusOr<CallArgs> call_args;
|
||||
grpc_metadata_array md =
|
||||
MetadataBatchToMetadataArray(call_args->client_initial_metadata.get());
|
||||
std::atomic<bool> 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<State*>(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<absl::StatusCode>(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<ServerMetadataHandle> 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<Arena>());
|
||||
server_ctx->auth_context =
|
||||
auth_context_->Ref(DEBUG_LOCATION, "server_auth_filter");
|
||||
grpc_call_context_element& context =
|
||||
GetContext<grpc_call_context_element>()[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<grpc_server_credentials> server_credentials,
|
||||
RefCountedPtr<grpc_auth_context> auth_context)
|
||||
: server_credentials_(server_credentials), auth_context_(auth_context) {}
|
||||
|
||||
absl::StatusOr<LegacyServerAuthFilter> LegacyServerAuthFilter::Create(
|
||||
const ChannelArgs& args, ChannelFilter::Args) {
|
||||
auto auth_context = args.GetObjectRef<grpc_auth_context>();
|
||||
GPR_ASSERT(auth_context != nullptr);
|
||||
auto creds = args.GetObjectRef<grpc_server_credentials>();
|
||||
return LegacyServerAuthFilter(std::move(creds), std::move(auth_context));
|
||||
}
|
||||
|
||||
} // namespace grpc_core
|
||||
|
|
@ -72,20 +72,13 @@ void RegisterSecurityFilters(CoreConfiguration::Builder* builder) {
|
|||
builder->channel_init()
|
||||
->RegisterFilter<ClientAuthFilter>(GRPC_CLIENT_DIRECT_CHANNEL)
|
||||
.IfHasChannelArg(GRPC_ARG_SECURITY_CONNECTOR);
|
||||
if (IsV3ServerAuthFilterEnabled()) {
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ServerAuthFilter>(GRPC_SERVER_CHANNEL)
|
||||
.IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG);
|
||||
} else {
|
||||
builder->channel_init()
|
||||
->RegisterFilter<LegacyServerAuthFilter>(GRPC_SERVER_CHANNEL)
|
||||
.IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG);
|
||||
}
|
||||
builder->channel_init()
|
||||
->RegisterFilter<ServerAuthFilter>(GRPC_SERVER_CHANNEL)
|
||||
.IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG);
|
||||
builder->channel_init()
|
||||
->RegisterFilter<GrpcServerAuthzFilter>(GRPC_SERVER_CHANNEL)
|
||||
.IfHasChannelArg(GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER)
|
||||
.After<ServerAuthFilter>()
|
||||
.After<LegacyServerAuthFilter>();
|
||||
.After<ServerAuthFilter>();
|
||||
}
|
||||
} // namespace grpc_core
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
Loading…
Reference in New Issue