Make blockdir always net specific

The blocks directory is net specific by definition.

Also this prevents the side effect of calling GetBlocksDir(false) in the
non-mainnet environment.
This commit is contained in:
Hennadii Stepanov 2018-10-05 21:04:08 +03:00
parent 13d98ea0d7
commit c3f1821ac7
No known key found for this signature in database
GPG key ID: 410108112E7EA81F
3 changed files with 6 additions and 8 deletions

View file

@ -906,7 +906,7 @@ bool AppInitParameterInteraction()
// also see: InitParameterInteraction() // also see: InitParameterInteraction()
if (!fs::is_directory(GetBlocksDir(false))) { if (!fs::is_directory(GetBlocksDir())) {
return InitError(strprintf(_("Specified blocks directory \"%s\" does not exist."), gArgs.GetArg("-blocksdir", "").c_str())); return InitError(strprintf(_("Specified blocks directory \"%s\" does not exist."), gArgs.GetArg("-blocksdir", "").c_str()));
} }

View file

@ -728,18 +728,17 @@ fs::path GetDefaultDataDir()
#endif #endif
} }
static fs::path g_blocks_path_cached;
static fs::path g_blocks_path_cache_net_specific; static fs::path g_blocks_path_cache_net_specific;
static fs::path pathCached; static fs::path pathCached;
static fs::path pathCachedNetSpecific; static fs::path pathCachedNetSpecific;
static CCriticalSection csPathCached; static CCriticalSection csPathCached;
const fs::path &GetBlocksDir(bool fNetSpecific) const fs::path &GetBlocksDir()
{ {
LOCK(csPathCached); LOCK(csPathCached);
fs::path &path = fNetSpecific ? g_blocks_path_cache_net_specific : g_blocks_path_cached; fs::path &path = g_blocks_path_cache_net_specific;
// This can be called during exceptions by LogPrintf(), so we cache the // This can be called during exceptions by LogPrintf(), so we cache the
// value so we don't have to do memory allocations after that. // value so we don't have to do memory allocations after that.
@ -755,9 +754,8 @@ const fs::path &GetBlocksDir(bool fNetSpecific)
} else { } else {
path = GetDataDir(false); path = GetDataDir(false);
} }
if (fNetSpecific)
path /= BaseParams().DataDir();
path /= BaseParams().DataDir();
path /= "blocks"; path /= "blocks";
fs::create_directories(path); fs::create_directories(path);
return path; return path;
@ -801,7 +799,6 @@ void ClearDatadirCache()
pathCached = fs::path(); pathCached = fs::path();
pathCachedNetSpecific = fs::path(); pathCachedNetSpecific = fs::path();
g_blocks_path_cached = fs::path();
g_blocks_path_cache_net_specific = fs::path(); g_blocks_path_cache_net_specific = fs::path();
} }

View file

@ -78,7 +78,8 @@ void ReleaseDirectoryLocks();
bool TryCreateDirectories(const fs::path& p); bool TryCreateDirectories(const fs::path& p);
fs::path GetDefaultDataDir(); fs::path GetDefaultDataDir();
const fs::path &GetBlocksDir(bool fNetSpecific = true); // The blocks directory is always net specific.
const fs::path &GetBlocksDir();
const fs::path &GetDataDir(bool fNetSpecific = true); const fs::path &GetDataDir(bool fNetSpecific = true);
void ClearDatadirCache(); void ClearDatadirCache();
fs::path GetConfigFile(const std::string& confPath); fs::path GetConfigFile(const std::string& confPath);