aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/lib/surface/init.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 91bd014a0e..dc257a34e4 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -106,6 +106,22 @@ static bool maybe_add_http_filter(grpc_exec_ctx *exec_ctx,
return true;
}
+typedef struct {
+ const grpc_channel_filter *filter;
+ const char *controlling_channel_arg;
+ bool default_on;
+} maybe_prepend_filter_args;
+
+static const maybe_prepend_filter_args message_size_args = {
+ &grpc_message_size_filter, NULL, true};
+
+static bool maybe_prepend_filter(grpc_exec_ctx *exec_ctx,
+ grpc_channel_stack_builder *builder,
+ void *arg) {
+ return grpc_channel_stack_builder_prepend_filter(
+ builder, (const grpc_channel_filter *)arg, NULL, NULL);
+}
+
static void register_builtin_channel_init() {
grpc_channel_init_register_stage(
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
@@ -115,7 +131,7 @@ static void register_builtin_channel_init() {
(void *)&grpc_server_deadline_filter);
grpc_channel_init_register_stage(
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
- prepend_filter, (void *)&grpc_message_size_filter);
+ maybe_prepend_filter, (void *)&message_size_args);
grpc_channel_init_register_stage(
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
prepend_filter, (void *)&grpc_message_size_filter);