aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2019-01-31 00:05:18 +0000
committerJoão Barbosa <joao.paulo.barbosa@gmail.com>2019-02-04 12:22:55 +0000
commit2f8b8f479bb43729ca2ff40929e8463347b0b7b4 (patch)
treed8ac8861dc68f4cfad476acd43d64e612c81792a /src/util
parent8602a1e6aeca65911e4d4c821d3575147ba32a7e (diff)
downloadbitcoin-2f8b8f479bb43729ca2ff40929e8463347b0b7b4.tar.xz
wallet: Close wallet env lock file
Close .walletlock file when a BerkeleyEnvironment is deleted.
Diffstat (limited to 'src/util')
-rw-r--r--src/util/system.cpp6
-rw-r--r--src/util/system.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/src/util/system.cpp b/src/util/system.cpp
index 06317a3a90..d8b70ee52c 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -116,6 +116,12 @@ bool LockDirectory(const fs::path& directory, const std::string lockfile_name, b
return true;
}
+void UnlockDirectory(const fs::path& directory, const std::string& lockfile_name)
+{
+ std::lock_guard<std::mutex> lock(cs_dir_locks);
+ dir_locks.erase((directory / lockfile_name).string());
+}
+
void ReleaseDirectoryLocks()
{
std::lock_guard<std::mutex> ulock(cs_dir_locks);
diff --git a/src/util/system.h b/src/util/system.h
index 5932e55793..17723d427d 100644
--- a/src/util/system.h
+++ b/src/util/system.h
@@ -70,6 +70,7 @@ int RaiseFileDescriptorLimit(int nMinFD);
void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length);
bool RenameOver(fs::path src, fs::path dest);
bool LockDirectory(const fs::path& directory, const std::string lockfile_name, bool probe_only=false);
+void UnlockDirectory(const fs::path& directory, const std::string& lockfile_name);
bool DirIsWritable(const fs::path& directory);
/** Release all directory locks. This is used for unit testing only, at runtime