diff options
author | David Garcia Quintas <dgq@google.com> | 2017-09-07 15:29:03 -0700 |
---|---|---|
committer | David Garcia Quintas <dgq@google.com> | 2017-09-07 15:29:03 -0700 |
commit | 1faa48ead3c8388b1fbac4c3a20c5f3b9ac48dbe (patch) | |
tree | b1526bb04534b472de7f52b1253b9862fefa28f5 /src/core/ext/filters/load_reporting | |
parent | 0822d331df072c303d8788abcaecfb90270cac41 (diff) | |
parent | 4fb50865e0606bdcd67f3b7e5d5faa22d4b523e8 (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.c | 1 | ||||
-rw-r--r-- | src/core/ext/filters/load_reporting/server_load_reporting_plugin.c | 12 |
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; } |