Skip to content

Commit

Permalink
cli: fix Fatal LevelDB error when specifying -blockfilterindex=basic …
Browse files Browse the repository at this point in the history
…twice
  • Loading branch information
brakmic committed Dec 6, 2019
1 parent cb11324 commit 034561f
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 8 deletions.
8 changes: 4 additions & 4 deletions src/blockfilter.cpp
Expand Up @@ -4,6 +4,7 @@

#include <mutex>
#include <sstream>
#include <set>

#include <blockfilter.h>
#include <crypto/siphash.h>
Expand Down Expand Up @@ -221,15 +222,14 @@ bool BlockFilterTypeByName(const std::string& name, BlockFilterType& filter_type
return false;
}

const std::vector<BlockFilterType>& AllBlockFilterTypes()
const std::set<BlockFilterType>& AllBlockFilterTypes()
{
static std::vector<BlockFilterType> types;
static std::set<BlockFilterType> types;

static std::once_flag flag;
std::call_once(flag, []() {
types.reserve(g_filter_types.size());
for (auto entry : g_filter_types) {
types.push_back(entry.first);
types.insert(entry.first);
}
});

Expand Down
3 changes: 2 additions & 1 deletion src/blockfilter.h
Expand Up @@ -7,6 +7,7 @@

#include <stdint.h>
#include <string>
#include <set>
#include <unordered_set>
#include <vector>

Expand Down Expand Up @@ -97,7 +98,7 @@ const std::string& BlockFilterTypeName(BlockFilterType filter_type);
bool BlockFilterTypeByName(const std::string& name, BlockFilterType& filter_type);

/** Get a list of known filter types. */
const std::vector<BlockFilterType>& AllBlockFilterTypes();
const std::set<BlockFilterType>& AllBlockFilterTypes();

/** Get a comma-separated list of known filter type names. */
const std::string& ListBlockFilterTypes();
Expand Down
6 changes: 3 additions & 3 deletions src/init.cpp
Expand Up @@ -58,6 +58,7 @@

#include <stdint.h>
#include <stdio.h>
#include <set>

#ifndef WIN32
#include <attributes.h>
Expand Down Expand Up @@ -846,7 +847,7 @@ int nUserMaxConnections;
int nFD;
ServiceFlags nLocalServices = ServiceFlags(NODE_NETWORK | NODE_NETWORK_LIMITED);
int64_t peer_connect_timeout;
std::vector<BlockFilterType> g_enabled_filter_types;
std::set<BlockFilterType> g_enabled_filter_types;

} // namespace

Expand Down Expand Up @@ -934,13 +935,12 @@ bool AppInitParameterInteraction()
g_enabled_filter_types = AllBlockFilterTypes();
} else if (blockfilterindex_value != "0") {
const std::vector<std::string> names = gArgs.GetArgs("-blockfilterindex");
g_enabled_filter_types.reserve(names.size());
for (const auto& name : names) {
BlockFilterType filter_type;
if (!BlockFilterTypeByName(name, filter_type)) {
return InitError(strprintf(_("Unknown -blockfilterindex value %s.").translated, name));
}
g_enabled_filter_types.push_back(filter_type);
g_enabled_filter_types.insert(filter_type);
}
}

Expand Down

0 comments on commit 034561f

Please sign in to comment.