diff --git a/src/cpp/ripple/Application.cpp b/src/cpp/ripple/Application.cpp index 6e9043be64..5be04fc9b4 100644 --- a/src/cpp/ripple/Application.cpp +++ b/src/cpp/ripple/Application.cpp @@ -54,6 +54,7 @@ Application::Application() : extern const char *RpcDBInit[], *TxnDBInit[], *LedgerDBInit[], *WalletDBInit[], *HashNodeDBInit[], *NetNodeDBInit[]; extern int RpcDBCount, TxnDBCount, LedgerDBCount, WalletDBCount, HashNodeDBCount, NetNodeDBCount; +bool Instance::running = true; void Application::stop() { @@ -65,6 +66,7 @@ void Application::stop() mAuxService.stop(); cLog(lsINFO) << "Stopped: " << mIOService.stopped(); + Instance::shutdown(); } static void InitDB(DatabaseCon** dbCon, const char *fileName, const char *dbInit[], int dbCount) diff --git a/src/cpp/ripple/InstanceCounter.h b/src/cpp/ripple/InstanceCounter.h index aaec9efcd7..48f82d0332 100644 --- a/src/cpp/ripple/InstanceCounter.h +++ b/src/cpp/ripple/InstanceCounter.h @@ -86,11 +86,13 @@ public: class Instance { protected: + static bool running; InstanceType& mType; public: Instance(InstanceType& t) : mType(t) { mType.addInstance(); } - ~Instance() { mType.decInstance(); } + ~Instance() { if (running) mType.decInstance(); } + static void shutdown() { running = false; } }; #endif