aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/filters/load_reporting
diff options
context:
space:
mode:
authorGravatar David Garcia Quintas <dgq@google.com>2017-09-07 15:29:03 -0700
committerGravatar David Garcia Quintas <dgq@google.com>2017-09-07 15:29:03 -0700
commit1faa48ead3c8388b1fbac4c3a20c5f3b9ac48dbe (patch)
treeb1526bb04534b472de7f52b1253b9862fefa28f5 /src/core/ext/filters/load_reporting
parent0822d331df072c303d8788abcaecfb90270cac41 (diff)
parent4fb50865e0606bdcd67f3b7e5d5faa22d4b523e8 (diff)
Merge branch 'master' of github.com:grpc/grpc into rename_lr_to_plugin
Diffstat (limited to 'src/core/ext/filters/load_reporting')
-rw-r--r--src/core/ext/filters/load_reporting/server_load_reporting_filter.c1
-rw-r--r--src/core/ext/filters/load_reporting/server_load_reporting_plugin.c12
2 files changed, 9 insertions, 4 deletions
diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.c b/src/core/ext/filters/load_reporting/server_load_reporting_filter.c
index c1ee38ea1a..7b8cf986f7 100644
--- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.c
+++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.c
@@ -223,6 +223,5 @@ const grpc_channel_filter grpc_server_load_reporting_filter = {
sizeof(channel_data),
init_channel_elem,
destroy_channel_elem,
- grpc_call_next_get_peer,
grpc_channel_next_get_info,
"load_reporting"};
diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.c b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
index 955ecde904..199cb883b3 100644
--- a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
+++ b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
@@ -41,9 +41,15 @@ static bool maybe_add_server_load_reporting_filter(
grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, void *arg) {
const grpc_channel_args *args =
grpc_channel_stack_builder_get_channel_arguments(builder);
- if (is_load_reporting_enabled(args)) {
- return grpc_channel_stack_builder_prepend_filter(
- builder, (const grpc_channel_filter *)arg, NULL, NULL);
+ const grpc_channel_filter *filter = arg;
+ grpc_channel_stack_builder_iterator *it =
+ grpc_channel_stack_builder_iterator_find(builder, filter->name);
+ const bool already_has_load_reporting_filter =
+ !grpc_channel_stack_builder_iterator_is_end(it);
+ grpc_channel_stack_builder_iterator_destroy(it);
+ if (is_load_reporting_enabled(args) && !already_has_load_reporting_filter) {
+ return grpc_channel_stack_builder_prepend_filter(builder, filter, NULL,
+ NULL);
}
return true;
}