aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2016-11-11 12:35:47 +0200
committerRiccardo Spagni <ric@spagni.net>2016-11-11 12:35:47 +0200
commita3cd7230f879d6e03ae2ec0ef077783f046cdc1e (patch)
tree75a38371b0374e2c9855f41351932538be4af252 /src
parentMerge pull request #1314 (diff)
parentWallet API: use stored refresh height when rebuilding cache (diff)
downloadmonero-a3cd7230f879d6e03ae2ec0ef077783f046cdc1e.tar.xz
Merge pull request #1315
9150a16 Wallet API: use stored refresh height when rebuilding cache (Jacob Brydolf)
Diffstat (limited to 'src')
-rw-r--r--src/wallet/api/wallet.cpp14
-rw-r--r--src/wallet/api/wallet.h1
2 files changed, 13 insertions, 2 deletions
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index d00a8c462..134ea601c 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -201,6 +201,7 @@ WalletImpl::WalletImpl(bool testnet)
, m_wallet2Callback(nullptr)
, m_recoveringFromSeed(false)
, m_synchronized(false)
+ , m_rebuildWalletCache(false)
{
m_wallet = new tools::wallet2(testnet);
m_history = new TransactionHistoryImpl(this);
@@ -269,6 +270,14 @@ bool WalletImpl::open(const std::string &path, const std::string &password)
m_recoveringFromSeed = false;
try {
// TODO: handle "deprecated"
+ // Check if wallet cache exists
+ bool keys_file_exists;
+ bool wallet_file_exists;
+ tools::wallet2::wallet_exists(path, keys_file_exists, wallet_file_exists);
+ if(!wallet_file_exists){
+ // Rebuilding wallet cache, using refresh height from .keys file
+ m_rebuildWalletCache = true;
+ }
m_wallet->load(path, password);
m_password = password;
@@ -998,8 +1007,9 @@ bool WalletImpl::isNewWallet() const
{
// in case wallet created without daemon connection, closed and opened again,
// it's the same case as if it created from scratch, i.e. we need "fast sync"
- // with the daemon (pull hashes instead of pull blocks)
- return !(blockChainHeight() > 1 || m_recoveringFromSeed);
+ // with the daemon (pull hashes instead of pull blocks).
+ // If wallet cache is rebuilt, creation height stored in .keys is used.
+ return !(blockChainHeight() > 1 || m_recoveringFromSeed || m_rebuildWalletCache);
}
void WalletImpl::doInit(const string &daemon_address, uint64_t upper_transaction_size_limit)
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
index e447879de..372d6efd7 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -145,6 +145,7 @@ private:
// instead of pulling hashes (fast-refresh)
bool m_recoveringFromSeed;
std::atomic<bool> m_synchronized;
+ bool m_rebuildWalletCache;
};