From 951ad1b0cf9320602923510bae486f72e550491e Mon Sep 17 00:00:00 2001 From: nic-chen Date: Tue, 13 Oct 2020 18:13:06 +0800 Subject: [PATCH 01/11] lua: Expose stream info downstreamLocalAddress and downstreamDirectRemoteAddress for Lua filter Signed-off-by: nic-chen --- .../http/http_filters/lua_filter.rst | 20 ++++++++ .../extensions/filters/http/lua/wrappers.cc | 10 ++++ source/extensions/filters/http/lua/wrappers.h | 15 ++++++ test/extensions/filters/http/lua/BUILD | 1 + .../filters/http/lua/lua_integration_test.cc | 18 ++++++++ .../filters/http/lua/wrappers_test.cc | 46 +++++++++++++++++++ 6 files changed, 110 insertions(+) diff --git a/docs/root/configuration/http/http_filters/lua_filter.rst b/docs/root/configuration/http/http_filters/lua_filter.rst index ebd60a7c0ded..ceb6edb0f593 100644 --- a/docs/root/configuration/http/http_filters/lua_filter.rst +++ b/docs/root/configuration/http/http_filters/lua_filter.rst @@ -643,6 +643,26 @@ protocol() Returns the string representation of :repo:`HTTP protocol ` used by the current request. The possible values are: *HTTP/1.0*, *HTTP/1.1*, and *HTTP/2*. +downstreamLocalAddress() +^^^^^^^^^^ + +.. code-block:: lua + + streamInfo:downstreamLocalAddress() + +Returns the string representation of :repo:`downstream remote address ` +used by the current request. + +downstreamDirectRemoteAddress() +^^^^^^^^^^ + +.. code-block:: lua + + streamInfo:downstreamDirectRemoteAddress() + +Returns the string representation of :repo:`downstream directly connected address ` +used by the current request. This is equivalent to the address of the physical connection. + dynamicMetadata() ^^^^^^^^^^^^^^^^^ diff --git a/source/extensions/filters/http/lua/wrappers.cc b/source/extensions/filters/http/lua/wrappers.cc index cb31e695f8be..daf9d864f246 100644 --- a/source/extensions/filters/http/lua/wrappers.cc +++ b/source/extensions/filters/http/lua/wrappers.cc @@ -129,6 +129,16 @@ int StreamInfoWrapper::luaDownstreamSslConnection(lua_State* state) { return 1; } +int StreamInfoWrapper::luaDownstreamLocalAddress(lua_State* state) { + lua_pushstring(state, stream_info_.downstreamLocalAddress()->asString().c_str()); + return 1; +} + +int StreamInfoWrapper::luaDownstreamDirectRemoteAddress(lua_State* state) { + lua_pushstring(state, stream_info_.downstreamDirectRemoteAddress()->asString().c_str()); + return 1; +} + DynamicMetadataMapIterator::DynamicMetadataMapIterator(DynamicMetadataMapWrapper& parent) : parent_{parent}, current_{parent_.streamInfo().dynamicMetadata().filter_metadata().begin()} {} diff --git a/source/extensions/filters/http/lua/wrappers.h b/source/extensions/filters/http/lua/wrappers.h index 89f7cb6d2d24..35d33e007ade 100644 --- a/source/extensions/filters/http/lua/wrappers.h +++ b/source/extensions/filters/http/lua/wrappers.h @@ -184,6 +184,8 @@ class StreamInfoWrapper : public Filters::Common::Lua::BaseLuaObjectvalue() .getStringView()); + EXPECT_TRUE( + absl::StrContains(upstream_request_->headers() + .get(Http::LowerCaseString("request_downstream_local_address_value")) + ->value() + .getStringView(), + GetParam() == Network::Address::IpVersion::v4 ? "127.0.0.1:" : "[::1]:")); + + EXPECT_TRUE( + absl::StrContains(upstream_request_->headers() + .get(Http::LowerCaseString("request_downstream_directremote_address_value")) + ->value() + .getStringView(), + GetParam() == Network::Address::IpVersion::v4 ? "127.0.0.1:" : "[::1]:")); + Http::TestResponseHeaderMapImpl response_headers{{":status", "200"}, {"foo", "bar"}}; upstream_request_->encodeHeaders(response_headers, false); Buffer::OwnedImpl response_data1("good"); diff --git a/test/extensions/filters/http/lua/wrappers_test.cc b/test/extensions/filters/http/lua/wrappers_test.cc index 990016db3f15..49b39789b727 100644 --- a/test/extensions/filters/http/lua/wrappers_test.cc +++ b/test/extensions/filters/http/lua/wrappers_test.cc @@ -1,6 +1,7 @@ #include "envoy/config/core/v3/base.pb.h" #include "common/http/utility.h" +#include "common/network/address_impl.h" #include "common/stream_info/stream_info_impl.h" #include "extensions/filters/http/lua/wrappers.h" @@ -11,6 +12,7 @@ using testing::InSequence; using testing::ReturnPointee; +using testing::ReturnRef; namespace Envoy { namespace Extensions { @@ -269,6 +271,50 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentProtocol) { expectToPrintCurrentProtocol(Http::Protocol::Http2); } +// Verify downstream addresses are available from stream info wrapper. +TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { + const std::string SCRIPT{R"EOF( + function callMe(object) + testPrint(string.format("%s", object:downstreamLocalAddress())) + end + )EOF"}; + + InSequence s; + setup(SCRIPT); + + NiceMock stream_info; + auto address = Network::Address::InstanceConstSharedPtr{ + new Network::Address::Ipv4Instance("127.0.0.1", 8000)}; + EXPECT_CALL(stream_info, downstreamLocalAddress()).WillRepeatedly(ReturnRef(address)); + Filters::Common::Lua::LuaDeathRef wrapper( + StreamInfoWrapper::create(coroutine_->luaState(), stream_info), true); + EXPECT_CALL(printer_, testPrint(address->asString())); + start("callMe"); + wrapper.reset(); +} + +// Verify downstream direct remote addresses are available from stream info wrapper. +TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { + const std::string SCRIPT{R"EOF( + function callMe(object) + testPrint(string.format("%s", object:downstreamDirectRemoteAddress())) + end + )EOF"}; + + InSequence s; + setup(SCRIPT); + + NiceMock stream_info; + auto address = Network::Address::InstanceConstSharedPtr{ + new Network::Address::Ipv4Instance("127.0.0.1", 8000)}; + EXPECT_CALL(stream_info, downstreamDirectRemoteAddress()).WillRepeatedly(ReturnRef(address)); + Filters::Common::Lua::LuaDeathRef wrapper( + StreamInfoWrapper::create(coroutine_->luaState(), stream_info), true); + EXPECT_CALL(printer_, testPrint(address->asString())); + start("callMe"); + wrapper.reset(); +} + // Set, get and iterate stream info dynamic metadata. TEST_F(LuaStreamInfoWrapperTest, SetGetAndIterateDynamicMetadata) { const std::string SCRIPT{R"EOF( From 496f885b4fb0049cadf1329cbfdc24ecaec4d91b Mon Sep 17 00:00:00 2001 From: nic-chen Date: Tue, 13 Oct 2020 21:26:05 +0800 Subject: [PATCH 02/11] doc: add version history for changes Signed-off-by: nic-chen --- docs/root/version_history/current.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index 74060d4e5c5f..e7432b0ba79e 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -33,6 +33,8 @@ New Features * mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. * ratelimit: added :ref:`disable_x_envoy_ratelimited_header ` option to disable `X-Envoy-RateLimited` header. * tcp: added a new :ref:`envoy.overload_actions.reject_incoming_connections ` action to reject incoming TCP connections. +* lua: added :ref:`streamInfo():downstreamLocalAddress() ` API. +* lua: added :ref:`streamInfo():downstreamDirectRemoteAddress() ` API. Deprecated ---------- From 84b8a8b7299033c840b0abc78513033b89cecde2 Mon Sep 17 00:00:00 2001 From: nic-chen Date: Tue, 13 Oct 2020 23:37:44 +0800 Subject: [PATCH 03/11] fix: merge test cases for `downstreamLocalAddress` and `downstreamDirectRemoteAddress` into one Signed-off-by: nic-chen --- .../filters/http/lua/wrappers_test.cc | 29 ++++--------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/test/extensions/filters/http/lua/wrappers_test.cc b/test/extensions/filters/http/lua/wrappers_test.cc index 49b39789b727..fd8205222e91 100644 --- a/test/extensions/filters/http/lua/wrappers_test.cc +++ b/test/extensions/filters/http/lua/wrappers_test.cc @@ -271,32 +271,11 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentProtocol) { expectToPrintCurrentProtocol(Http::Protocol::Http2); } -// Verify downstream addresses are available from stream info wrapper. +// Verify downstream local addresses and downstream direct remote addresses are available from stream info wrapper. TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { const std::string SCRIPT{R"EOF( function callMe(object) testPrint(string.format("%s", object:downstreamLocalAddress())) - end - )EOF"}; - - InSequence s; - setup(SCRIPT); - - NiceMock stream_info; - auto address = Network::Address::InstanceConstSharedPtr{ - new Network::Address::Ipv4Instance("127.0.0.1", 8000)}; - EXPECT_CALL(stream_info, downstreamLocalAddress()).WillRepeatedly(ReturnRef(address)); - Filters::Common::Lua::LuaDeathRef wrapper( - StreamInfoWrapper::create(coroutine_->luaState(), stream_info), true); - EXPECT_CALL(printer_, testPrint(address->asString())); - start("callMe"); - wrapper.reset(); -} - -// Verify downstream direct remote addresses are available from stream info wrapper. -TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { - const std::string SCRIPT{R"EOF( - function callMe(object) testPrint(string.format("%s", object:downstreamDirectRemoteAddress())) end )EOF"}; @@ -307,10 +286,14 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { NiceMock stream_info; auto address = Network::Address::InstanceConstSharedPtr{ new Network::Address::Ipv4Instance("127.0.0.1", 8000)}; - EXPECT_CALL(stream_info, downstreamDirectRemoteAddress()).WillRepeatedly(ReturnRef(address)); + auto downstream_direct_remote = Network::Address::InstanceConstSharedPtr{ + new Network::Address::Ipv4Instance("8.8.8.8", 3000)}; + EXPECT_CALL(stream_info, downstreamLocalAddress()).WillRepeatedly(ReturnRef(address)); + EXPECT_CALL(stream_info, downstreamDirectRemoteAddress()).WillRepeatedly(ReturnRef(downstream_direct_remote)); Filters::Common::Lua::LuaDeathRef wrapper( StreamInfoWrapper::create(coroutine_->luaState(), stream_info), true); EXPECT_CALL(printer_, testPrint(address->asString())); + EXPECT_CALL(printer_, testPrint(downstream_direct_remote->asString())); start("callMe"); wrapper.reset(); } From d4e8d420049738635a6189fdf673955b4e16af84 Mon Sep 17 00:00:00 2001 From: nic-chen Date: Thu, 15 Oct 2020 07:24:30 +0800 Subject: [PATCH 04/11] fix format Signed-off-by: nic-chen --- docs/root/version_history/current.rst | 2 ++ source/extensions/filters/http/lua/wrappers.h | 2 +- .../filters/http/lua/lua_integration_test.cc | 12 ++++++------ test/extensions/filters/http/lua/wrappers_test.cc | 10 ++++++---- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index e7432b0ba79e..bb0feff65ea8 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -35,6 +35,8 @@ New Features * tcp: added a new :ref:`envoy.overload_actions.reject_incoming_connections ` action to reject incoming TCP connections. * lua: added :ref:`streamInfo():downstreamLocalAddress() ` API. * lua: added :ref:`streamInfo():downstreamDirectRemoteAddress() ` API. +* lua: added :ref:`streamInfo():downstreamLocalAddress() ` API. +* mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. Deprecated ---------- diff --git a/source/extensions/filters/http/lua/wrappers.h b/source/extensions/filters/http/lua/wrappers.h index 35d33e007ade..bf19843dd8d1 100644 --- a/source/extensions/filters/http/lua/wrappers.h +++ b/source/extensions/filters/http/lua/wrappers.h @@ -216,7 +216,7 @@ class StreamInfoWrapper : public Filters::Common::Lua::BaseLuaObjectheaders() - .get(Http::LowerCaseString("request_downstream_directremote_address_value")) - ->value() - .getStringView(), - GetParam() == Network::Address::IpVersion::v4 ? "127.0.0.1:" : "[::1]:")); + EXPECT_TRUE(absl::StrContains( + upstream_request_->headers() + .get(Http::LowerCaseString("request_downstream_directremote_address_value")) + ->value() + .getStringView(), + GetParam() == Network::Address::IpVersion::v4 ? "127.0.0.1:" : "[::1]:")); Http::TestResponseHeaderMapImpl response_headers{{":status", "200"}, {"foo", "bar"}}; upstream_request_->encodeHeaders(response_headers, false); diff --git a/test/extensions/filters/http/lua/wrappers_test.cc b/test/extensions/filters/http/lua/wrappers_test.cc index fd8205222e91..9a0b24594ce6 100644 --- a/test/extensions/filters/http/lua/wrappers_test.cc +++ b/test/extensions/filters/http/lua/wrappers_test.cc @@ -271,7 +271,8 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentProtocol) { expectToPrintCurrentProtocol(Http::Protocol::Http2); } -// Verify downstream local addresses and downstream direct remote addresses are available from stream info wrapper. +// Verify downstream local addresses and downstream direct remote addresses are available from +// stream info wrapper. TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { const std::string SCRIPT{R"EOF( function callMe(object) @@ -286,10 +287,11 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { NiceMock stream_info; auto address = Network::Address::InstanceConstSharedPtr{ new Network::Address::Ipv4Instance("127.0.0.1", 8000)}; - auto downstream_direct_remote = Network::Address::InstanceConstSharedPtr{ - new Network::Address::Ipv4Instance("8.8.8.8", 3000)}; + auto downstream_direct_remote = + Network::Address::InstanceConstSharedPtr{new Network::Address::Ipv4Instance("8.8.8.8", 3000)}; EXPECT_CALL(stream_info, downstreamLocalAddress()).WillRepeatedly(ReturnRef(address)); - EXPECT_CALL(stream_info, downstreamDirectRemoteAddress()).WillRepeatedly(ReturnRef(downstream_direct_remote)); + EXPECT_CALL(stream_info, downstreamDirectRemoteAddress()) + .WillRepeatedly(ReturnRef(downstream_direct_remote)); Filters::Common::Lua::LuaDeathRef wrapper( StreamInfoWrapper::create(coroutine_->luaState(), stream_info), true); EXPECT_CALL(printer_, testPrint(address->asString())); From 668ab4247d947c7e295af629c3be4fd7f07e94b8 Mon Sep 17 00:00:00 2001 From: nic-chen Date: Thu, 15 Oct 2020 08:48:54 +0800 Subject: [PATCH 05/11] fix doc style Signed-off-by: nic-chen --- docs/root/configuration/http/http_filters/lua_filter.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/root/configuration/http/http_filters/lua_filter.rst b/docs/root/configuration/http/http_filters/lua_filter.rst index ceb6edb0f593..3f067fdb7ea0 100644 --- a/docs/root/configuration/http/http_filters/lua_filter.rst +++ b/docs/root/configuration/http/http_filters/lua_filter.rst @@ -644,7 +644,7 @@ Returns the string representation of :repo:`HTTP protocol Date: Thu, 15 Oct 2020 08:49:28 +0800 Subject: [PATCH 06/11] fix test cases Signed-off-by: nic-chen --- test/extensions/filters/http/lua/lua_integration_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/extensions/filters/http/lua/lua_integration_test.cc b/test/extensions/filters/http/lua/lua_integration_test.cc index 88e0bda06b73..92f8e7e141a6 100644 --- a/test/extensions/filters/http/lua/lua_integration_test.cc +++ b/test/extensions/filters/http/lua/lua_integration_test.cc @@ -331,14 +331,14 @@ name: lua EXPECT_TRUE( absl::StrContains(upstream_request_->headers() - .get(Http::LowerCaseString("request_downstream_local_address_value")) + .get(Http::LowerCaseString("request_downstream_local_address_value"))[0] ->value() .getStringView(), GetParam() == Network::Address::IpVersion::v4 ? "127.0.0.1:" : "[::1]:")); EXPECT_TRUE(absl::StrContains( upstream_request_->headers() - .get(Http::LowerCaseString("request_downstream_directremote_address_value")) + .get(Http::LowerCaseString("request_downstream_directremote_address_value"))[0] ->value() .getStringView(), GetParam() == Network::Address::IpVersion::v4 ? "127.0.0.1:" : "[::1]:")); From bf4249c3d9020aa5cf8437c3329f1d41b2874cd6 Mon Sep 17 00:00:00 2001 From: nic-chen Date: Fri, 16 Oct 2020 14:17:41 +0800 Subject: [PATCH 07/11] fix test case fail Signed-off-by: nic-chen --- test/extensions/filters/http/lua/wrappers_test.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/extensions/filters/http/lua/wrappers_test.cc b/test/extensions/filters/http/lua/wrappers_test.cc index 9a0b24594ce6..8d671df5ce58 100644 --- a/test/extensions/filters/http/lua/wrappers_test.cc +++ b/test/extensions/filters/http/lua/wrappers_test.cc @@ -276,8 +276,8 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentProtocol) { TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { const std::string SCRIPT{R"EOF( function callMe(object) - testPrint(string.format("%s", object:downstreamLocalAddress())) - testPrint(string.format("%s", object:downstreamDirectRemoteAddress())) + testPrint(object:downstreamLocalAddress()) + testPrint(object:downstreamDirectRemoteAddress()) end )EOF"}; @@ -289,9 +289,9 @@ TEST_F(LuaStreamInfoWrapperTest, ReturnCurrentDownstreamAddresses) { new Network::Address::Ipv4Instance("127.0.0.1", 8000)}; auto downstream_direct_remote = Network::Address::InstanceConstSharedPtr{new Network::Address::Ipv4Instance("8.8.8.8", 3000)}; - EXPECT_CALL(stream_info, downstreamLocalAddress()).WillRepeatedly(ReturnRef(address)); - EXPECT_CALL(stream_info, downstreamDirectRemoteAddress()) - .WillRepeatedly(ReturnRef(downstream_direct_remote)); + ON_CALL(stream_info, downstreamLocalAddress()).WillByDefault(ReturnRef(address)); + ON_CALL(stream_info, downstreamDirectRemoteAddress()) + .WillByDefault(ReturnRef(downstream_direct_remote)); Filters::Common::Lua::LuaDeathRef wrapper( StreamInfoWrapper::create(coroutine_->luaState(), stream_info), true); EXPECT_CALL(printer_, testPrint(address->asString())); From b9d34e7bb27d96fb0d99f7e4fe7abfe5f6904cbc Mon Sep 17 00:00:00 2001 From: nic-chen Date: Fri, 16 Oct 2020 15:14:55 +0800 Subject: [PATCH 08/11] fix: doc error Signed-off-by: nic-chen --- docs/root/version_history/current.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index bb0feff65ea8..76e8b59199f4 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -30,13 +30,11 @@ New Features * grpc: implemented header value syntax support when defining :ref:`initial metadata ` for gRPC-based `ext_authz` :ref:`HTTP ` and :ref:`network ` filters, and :ref:`ratelimit ` filters. * hds: added support for delta updates in the :ref:`HealthCheckSpecifier `, making only the Endpoints and Health Checkers that changed be reconstructed on receiving a new message, rather than the entire HDS. * health_check: added option to use :ref:`no_traffic_healthy_interval ` which allows a different no traffic interval when the host is healthy. -* mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. -* ratelimit: added :ref:`disable_x_envoy_ratelimited_header ` option to disable `X-Envoy-RateLimited` header. -* tcp: added a new :ref:`envoy.overload_actions.reject_incoming_connections ` action to reject incoming TCP connections. * lua: added :ref:`streamInfo():downstreamLocalAddress() ` API. * lua: added :ref:`streamInfo():downstreamDirectRemoteAddress() ` API. -* lua: added :ref:`streamInfo():downstreamLocalAddress() ` API. * mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. +* ratelimit: added :ref:`disable_x_envoy_ratelimited_header ` option to disable `X-Envoy-RateLimited` header. +* tcp: added a new :ref:`envoy.overload_actions.reject_incoming_connections ` action to reject incoming TCP connections. Deprecated ---------- From 06e4bdfc9727a4d002dc5eaafb947517c0ddfb93 Mon Sep 17 00:00:00 2001 From: nic-chen Date: Fri, 16 Oct 2020 23:58:25 +0800 Subject: [PATCH 09/11] update doc Signed-off-by: nic-chen --- docs/root/version_history/current.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index 76e8b59199f4..e7b7845cbe26 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -30,8 +30,7 @@ New Features * grpc: implemented header value syntax support when defining :ref:`initial metadata ` for gRPC-based `ext_authz` :ref:`HTTP ` and :ref:`network ` filters, and :ref:`ratelimit ` filters. * hds: added support for delta updates in the :ref:`HealthCheckSpecifier `, making only the Endpoints and Health Checkers that changed be reconstructed on receiving a new message, rather than the entire HDS. * health_check: added option to use :ref:`no_traffic_healthy_interval ` which allows a different no traffic interval when the host is healthy. -* lua: added :ref:`streamInfo():downstreamLocalAddress() ` API. -* lua: added :ref:`streamInfo():downstreamDirectRemoteAddress() ` API. +* lua: added `downstreamDirectRemoteAddress()` and `downstreamLocalAddress()` APIs :ref:`streamInfo() `. * mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. * ratelimit: added :ref:`disable_x_envoy_ratelimited_header ` option to disable `X-Envoy-RateLimited` header. * tcp: added a new :ref:`envoy.overload_actions.reject_incoming_connections ` action to reject incoming TCP connections. From 04119ae09b4be714127abc6e184b5d8d2a037b42 Mon Sep 17 00:00:00 2001 From: nic-chen Date: Sat, 17 Oct 2020 06:54:31 +0800 Subject: [PATCH 10/11] fix auto merged doc Signed-off-by: nic-chen --- docs/root/version_history/current.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index 3980b263b92e..8b228511b4e0 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -31,8 +31,8 @@ New Features * grpc: implemented header value syntax support when defining :ref:`initial metadata ` for gRPC-based `ext_authz` :ref:`HTTP ` and :ref:`network ` filters, and :ref:`ratelimit ` filters. * hds: added support for delta updates in the :ref:`HealthCheckSpecifier `, making only the Endpoints and Health Checkers that changed be reconstructed on receiving a new message, rather than the entire HDS. * health_check: added option to use :ref:`no_traffic_healthy_interval ` which allows a different no traffic interval when the host is healthy. -* lua: added `downstreamDirectRemoteAddress()` and `downstreamLocalAddress()` APIs :ref:`streamInfo() `. * listener: added an optional :ref:`default filter chain `. If this field is supplied, and none of the :ref:`filter_chains ` matches, this default filter chain is used to serve the connection. +* lua: added `downstreamDirectRemoteAddress()` and `downstreamLocalAddress()` APIs :ref:`streamInfo() `. * mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. * ratelimit: added support for use of various :ref:`metadata ` as a ratelimit action. * ratelimit: added :ref:`disable_x_envoy_ratelimited_header ` option to disable `X-Envoy-RateLimited` header. From e0263beee976069660d586146e4fdb590abc821c Mon Sep 17 00:00:00 2001 From: nic-chen Date: Sat, 17 Oct 2020 07:43:52 +0800 Subject: [PATCH 11/11] fix doc Signed-off-by: nic-chen --- docs/root/version_history/current.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/root/version_history/current.rst b/docs/root/version_history/current.rst index 549a12f7c8ca..ab1ddd29a682 100644 --- a/docs/root/version_history/current.rst +++ b/docs/root/version_history/current.rst @@ -34,7 +34,7 @@ New Features * hds: added support for delta updates in the :ref:`HealthCheckSpecifier `, making only the Endpoints and Health Checkers that changed be reconstructed on receiving a new message, rather than the entire HDS. * health_check: added option to use :ref:`no_traffic_healthy_interval ` which allows a different no traffic interval when the host is healthy. * listener: added an optional :ref:`default filter chain `. If this field is supplied, and none of the :ref:`filter_chains ` matches, this default filter chain is used to serve the connection. -* lua: added `downstreamDirectRemoteAddress()` and `downstreamLocalAddress()` APIs :ref:`streamInfo() `. +* lua: added `downstreamDirectRemoteAddress()` and `downstreamLocalAddress()` APIs to :ref:`streamInfo() `. * mongo_proxy: the list of commands to produce metrics for is now :ref:`configurable `. * ratelimit: added support for use of various :ref:`metadata ` as a ratelimit action. * ratelimit: added :ref:`disable_x_envoy_ratelimited_header ` option to disable `X-Envoy-RateLimited` header.