From 70eb0d1844258e491f0d22866b8029e66846a482 Mon Sep 17 00:00:00 2001
From: xiphon <xiphon@protonmail.com>
Date: Sat, 17 Oct 2020 02:56:15 +0000
Subject: [PATCH] wallet2_api: implement stop() to interrupt refresh() loop
 once

---
 src/wallet/api/wallet.cpp    | 5 +++++
 src/wallet/api/wallet.h      | 1 +
 src/wallet/api/wallet2_api.h | 5 +++++
 3 files changed, 11 insertions(+)

diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index 152a7dcd7..9acc8484c 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -910,6 +910,11 @@ std::string WalletImpl::path() const
     return m_wallet->path();
 }
 
+void WalletImpl::stop()
+{
+    m_wallet->stop();
+}
+
 bool WalletImpl::store(const std::string &path)
 {
     clearStatus();
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
index caf1e9ed4..3bf3e759b 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -99,6 +99,7 @@ public:
     std::string publicSpendKey() const override;
     std::string publicMultisigSignerKey() const override;
     std::string path() const override;
+    void stop() override;
     bool store(const std::string &path) override;
     std::string filename() const override;
     std::string keysFilename() const override;
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
index c2559d1df..e8efc58b8 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -507,6 +507,11 @@ struct Wallet
      */
     virtual std::string publicMultisigSignerKey() const = 0;
 
+    /*!
+     * \brief stop - interrupts wallet refresh() loop once (doesn't stop background refresh thread)
+     */
+    virtual void stop() = 0;
+
     /*!
      * \brief store - stores wallet to file.
      * \param path - main filename to store wallet to. additionally stores address file and keys file.