From 3987827517dbf3ac80126002986269299adf9176 Mon Sep 17 00:00:00 2001
From: Lee Clagett <code@leeclagett.com>
Date: Fri, 26 Aug 2022 20:12:13 -0400
Subject: [PATCH] Fix shared_ptr cycle in test_epee_connection.test_lifetime

---
 tests/unit_tests/epee_boosted_tcp_server.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/tests/unit_tests/epee_boosted_tcp_server.cpp b/tests/unit_tests/epee_boosted_tcp_server.cpp
index c08a86a5e..70f1b966f 100644
--- a/tests/unit_tests/epee_boosted_tcp_server.cpp
+++ b/tests/unit_tests/epee_boosted_tcp_server.cpp
@@ -212,11 +212,14 @@ TEST(test_epee_connection, test_lifetime)
   server.get_config_shared()->set_handler(new command_handler_t, &command_handler_t::destroy);
 
   io_context.post([&io_context, &work, &endpoint, &server]{
-    auto scope_exit_handler = epee::misc_utils::create_scope_leave_handler([&work]{
+    shared_state_ptr shared_state;
+    auto scope_exit_handler = epee::misc_utils::create_scope_leave_handler([&work, &shared_state]{
       work.reset();
+      if (shared_state)
+        shared_state->set_handler(nullptr, nullptr);
     });
 
-    shared_state_ptr shared_state(std::make_shared<shared_state_t>());
+    shared_state = std::make_shared<shared_state_t>();
     shared_state->set_handler(new command_handler_t, &command_handler_t::destroy);
 
     auto create_connection = [&io_context, &endpoint, &shared_state] {