From 7bad4212f333e1de81d90da7991d4406b10e8f5d Mon Sep 17 00:00:00 2001 From: Kuat Yessenov Date: Wed, 14 Oct 2020 15:28:24 -0700 Subject: [PATCH 1/4] fix: record recovered local address Signed-off-by: Kuat Yessenov --- source/server/connection_handler_impl.cc | 3 +++ test/server/connection_handler_test.cc | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/source/server/connection_handler_impl.cc b/source/server/connection_handler_impl.cc index f819f5843c7be..e05b8f8438043 100644 --- a/source/server/connection_handler_impl.cc +++ b/source/server/connection_handler_impl.cc @@ -458,6 +458,9 @@ void ConnectionHandlerImpl::ActiveTcpListener::resumeListening() { void ConnectionHandlerImpl::ActiveTcpListener::newConnection( Network::ConnectionSocketPtr&& socket, std::unique_ptr stream_info) { + // Update local address in case it is restored by a listener filter + stream_info->setDownstreamLocalAddress(socket->localAddress()); + // Find matching filter chain. const auto filter_chain = config_->filterChainManager().findFilterChain(*socket); if (filter_chain == nullptr) { diff --git a/test/server/connection_handler_test.cc b/test/server/connection_handler_test.cc index b286dc588dd2d..152edce3f5bd6 100644 --- a/test/server/connection_handler_test.cc +++ b/test/server/connection_handler_test.cc @@ -604,7 +604,12 @@ TEST_F(ConnectionHandlerTest, NormalRedirect) { EXPECT_EQ(1UL, TestUtility::findCounter(stats_store_, "test.downstream_cx_total")->value()); EXPECT_EQ(1UL, TestUtility::findGauge(stats_store_, "test.downstream_cx_active")->value()); - EXPECT_CALL(*access_log_, log(_, _, _, _)).Times(1); + EXPECT_CALL(*access_log_, log(_, _, _, _)) + .WillOnce( + Invoke([&](const Http::RequestHeaderMap*, const Http::ResponseHeaderMap*, + const Http::ResponseTrailerMap*, const StreamInfo::StreamInfo& stream_info) { + EXPECT_EQ(alt_address, stream_info.downstreamLocalAddress()); + })); connection->close(Network::ConnectionCloseType::NoFlush); dispatcher_.clearDeferredDeleteList(); EXPECT_EQ(0UL, TestUtility::findGauge(stats_store_, "downstream_cx_active")->value()); @@ -614,6 +619,7 @@ TEST_F(ConnectionHandlerTest, NormalRedirect) { EXPECT_CALL(*listener1, onDestroy()); } +/* TEST_F(ConnectionHandlerTest, FallbackToWildcardListener) { Network::TcpListenerCallbacks* listener_callbacks1; auto listener1 = new NiceMock(); @@ -1048,7 +1054,7 @@ TEST_F(ConnectionHandlerTest, TcpListenerInplaceUpdate) { auto overridden_filter_chain_manager = std::make_shared>(); TestListener* new_test_listener = addListener( - new_listener_tag, true, false, "test_listener", /* Network::Listener */ nullptr, + new_listener_tag, true, false, "test_listener", / Network::Listener / nullptr, &new_listener_callbacks, mock_connection_balancer, nullptr, Network::Socket::Type::Stream, std::chrono::milliseconds(15000), false, overridden_filter_chain_manager); handler_->addListener(old_listener_tag, *new_test_listener); @@ -1218,6 +1224,7 @@ TEST_F(ConnectionHandlerTest, TcpBacklogCustom) { })); handler_->addListener(absl::nullopt, *test_listener); } +*/ } // namespace } // namespace Server From 9a3fe8038f6b88f771268e3f9c8de9913db9be95 Mon Sep 17 00:00:00 2001 From: Kuat Yessenov Date: Wed, 14 Oct 2020 15:32:49 -0700 Subject: [PATCH 2/4] fix test Signed-off-by: Kuat Yessenov --- test/server/connection_handler_test.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/server/connection_handler_test.cc b/test/server/connection_handler_test.cc index 152edce3f5bd6..dba36b1216dc3 100644 --- a/test/server/connection_handler_test.cc +++ b/test/server/connection_handler_test.cc @@ -619,7 +619,6 @@ TEST_F(ConnectionHandlerTest, NormalRedirect) { EXPECT_CALL(*listener1, onDestroy()); } -/* TEST_F(ConnectionHandlerTest, FallbackToWildcardListener) { Network::TcpListenerCallbacks* listener_callbacks1; auto listener1 = new NiceMock(); @@ -1054,7 +1053,7 @@ TEST_F(ConnectionHandlerTest, TcpListenerInplaceUpdate) { auto overridden_filter_chain_manager = std::make_shared>(); TestListener* new_test_listener = addListener( - new_listener_tag, true, false, "test_listener", / Network::Listener / nullptr, + new_listener_tag, true, false, "test_listener", /* Network::Listener */ nullptr, &new_listener_callbacks, mock_connection_balancer, nullptr, Network::Socket::Type::Stream, std::chrono::milliseconds(15000), false, overridden_filter_chain_manager); handler_->addListener(old_listener_tag, *new_test_listener); @@ -1224,7 +1223,6 @@ TEST_F(ConnectionHandlerTest, TcpBacklogCustom) { })); handler_->addListener(absl::nullopt, *test_listener); } -*/ } // namespace } // namespace Server From 7fe3fcf6301a7a1075ebec9038ac05fb31af01b6 Mon Sep 17 00:00:00 2001 From: Kuat Yessenov Date: Mon, 19 Oct 2020 10:35:05 -0700 Subject: [PATCH 3/4] review Signed-off-by: Kuat Yessenov --- source/server/connection_handler_impl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/server/connection_handler_impl.cc b/source/server/connection_handler_impl.cc index e05b8f8438043..233457b14ecc1 100644 --- a/source/server/connection_handler_impl.cc +++ b/source/server/connection_handler_impl.cc @@ -458,7 +458,7 @@ void ConnectionHandlerImpl::ActiveTcpListener::resumeListening() { void ConnectionHandlerImpl::ActiveTcpListener::newConnection( Network::ConnectionSocketPtr&& socket, std::unique_ptr stream_info) { - // Update local address in case it is restored by a listener filter + // Refresh local address in case it was restored by a listener filter like the original_dst filter. stream_info->setDownstreamLocalAddress(socket->localAddress()); // Find matching filter chain. From ca9e25a6fdeca5710f79c4bd88b8e0ddbcd98e4b Mon Sep 17 00:00:00 2001 From: Kuat Yessenov Date: Mon, 19 Oct 2020 11:05:11 -0700 Subject: [PATCH 4/4] fix format Signed-off-by: Kuat Yessenov --- source/server/connection_handler_impl.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/server/connection_handler_impl.cc b/source/server/connection_handler_impl.cc index 233457b14ecc1..d28f892b22aec 100644 --- a/source/server/connection_handler_impl.cc +++ b/source/server/connection_handler_impl.cc @@ -458,7 +458,8 @@ void ConnectionHandlerImpl::ActiveTcpListener::resumeListening() { void ConnectionHandlerImpl::ActiveTcpListener::newConnection( Network::ConnectionSocketPtr&& socket, std::unique_ptr stream_info) { - // Refresh local address in case it was restored by a listener filter like the original_dst filter. + // Refresh local address in case it was restored by a listener filter like the original_dst + // filter. stream_info->setDownstreamLocalAddress(socket->localAddress()); // Find matching filter chain.