diff --git a/src/xrpld/overlay/detail/ConnectAttempt.cpp b/src/xrpld/overlay/detail/ConnectAttempt.cpp index 55a6772081..bccc2ae7ae 100644 --- a/src/xrpld/overlay/detail/ConnectAttempt.cpp +++ b/src/xrpld/overlay/detail/ConnectAttempt.cpp @@ -120,12 +120,13 @@ ConnectAttempt::tryAsyncShutdown() strand_.running_in_this_thread(), "ripple::ConnectAttempt::tryAsyncShutdown : strand in this thread"); - if (!shutdown_) + if (!shutdown_ || shutdownStarted_) return; if (ioPending_) return; + shutdownStarted_ = true; setTimer(); // gracefully shutdown the SSL socket, performing a shutdown handshake diff --git a/src/xrpld/overlay/detail/ConnectAttempt.h b/src/xrpld/overlay/detail/ConnectAttempt.h index 68911ace6c..35bb28438e 100644 --- a/src/xrpld/overlay/detail/ConnectAttempt.h +++ b/src/xrpld/overlay/detail/ConnectAttempt.h @@ -61,6 +61,7 @@ private: request_type req_; bool shutdown_ = false; bool ioPending_ = false; + bool shutdownStarted_ = false; public: ConnectAttempt(