mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 23:09:44 -04:00
Ignore banlist.dat
This also allows to remove the "dirty" argument, which can now be deduced from the return value of Read().
This commit is contained in:
parent
4b1fb50def
commit
fa384fdd0b
6 changed files with 13 additions and 18 deletions
|
@ -56,7 +56,6 @@ Subdirectory | File(s) | Description
|
||||||
`indexes/coinstats/db/` | LevelDB database | Coinstats index; *optional*, used if `-coinstatsindex=1`
|
`indexes/coinstats/db/` | LevelDB database | Coinstats index; *optional*, used if `-coinstatsindex=1`
|
||||||
`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, wallets reside in the [data directory](#data-directory-location)
|
`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, wallets reside in the [data directory](#data-directory-location)
|
||||||
`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
|
`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
|
||||||
`./` | `banlist.dat` | Stores the addresses/subnets of banned nodes (deprecated). `bitcoind` or `bitcoin-qt` no longer save the banlist to this file, but read it on startup if `banlist.json` is not present.
|
|
||||||
`./` | `banlist.json` | Stores the addresses/subnets of banned nodes.
|
`./` | `banlist.json` | Stores the addresses/subnets of banned nodes.
|
||||||
`./` | `bitcoin.conf` | User-defined [configuration settings](bitcoin-conf.md) for `bitcoind` or `bitcoin-qt`. File is not written to by the software and must be created manually. Path can be specified by `-conf` option
|
`./` | `bitcoin.conf` | User-defined [configuration settings](bitcoin-conf.md) for `bitcoind` or `bitcoin-qt`. File is not written to by the software and must be created manually. Path can be specified by `-conf` option
|
||||||
`./` | `bitcoind.pid` | Stores the process ID (PID) of `bitcoind` or `bitcoin-qt` while running; created at start and deleted on shutdown; can be specified by `-pid` option
|
`./` | `bitcoind.pid` | Stores the process ID (PID) of `bitcoind` or `bitcoin-qt` while running; created at start and deleted on shutdown; can be specified by `-pid` option
|
||||||
|
@ -114,6 +113,7 @@ These subdirectories and files are no longer used by Bitcoin Core:
|
||||||
|
|
||||||
Path | Description | Repository notes
|
Path | Description | Repository notes
|
||||||
---------------|-------------|-----------------
|
---------------|-------------|-----------------
|
||||||
|
`banlist.dat` | Stores the addresses/subnets of banned nodes; superseded by `banlist.json` in 22.0 and completely ignored in 23.0 | [PR #20966](https://github.com/bitcoin/bitcoin/pull/20966), [PR #22570](https://github.com/bitcoin/bitcoin/pull/22570)
|
||||||
`blktree/` | Blockchain index; replaced by `blocks/index/` in [0.8.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.8.0.md#improvements) | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/bitcoin/bitcoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
`blktree/` | Blockchain index; replaced by `blocks/index/` in [0.8.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.8.0.md#improvements) | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/bitcoin/bitcoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
||||||
`coins/` | Unspent transaction output database; replaced by `chainstate/` in 0.8.0 | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/bitcoin/bitcoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
`coins/` | Unspent transaction output database; replaced by `chainstate/` in 0.8.0 | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/bitcoin/bitcoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
||||||
`blkindex.dat` | Blockchain index BDB database; replaced by {`chainstate/`, `blocks/index/`, `blocks/revNNNNN.dat`<sup>[\[2\]](#note2)</sup>} in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
|
`blkindex.dat` | Blockchain index BDB database; replaced by {`chainstate/`, `blocks/index/`, `blocks/revNNNNN.dat`<sup>[\[2\]](#note2)</sup>} in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
|
||||||
|
|
|
@ -197,16 +197,15 @@ bool CBanDB::Write(const banmap_t& banSet)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CBanDB::Read(banmap_t& banSet, bool& dirty)
|
bool CBanDB::Read(banmap_t& banSet)
|
||||||
{
|
{
|
||||||
// If the JSON banlist does not exist, then try to read the non-upgraded banlist.dat.
|
if (fs::exists(m_banlist_dat)) {
|
||||||
if (!fs::exists(m_banlist_json)) {
|
LogPrintf("banlist.dat ignored because it can only be read by " PACKAGE_NAME " version 22.x. Remove %s to silence this warning.\n", m_banlist_dat);
|
||||||
// If this succeeds then we need to flush to disk in order to create the JSON banlist.
|
}
|
||||||
dirty = true;
|
// If the JSON banlist does not exist, then recreate it
|
||||||
return DeserializeFileDB(m_banlist_dat, banSet, CLIENT_VERSION);
|
if (!fs::exists(m_banlist_json)) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dirty = false;
|
|
||||||
|
|
||||||
std::map<std::string, util::SettingsValue> settings;
|
std::map<std::string, util::SettingsValue> settings;
|
||||||
std::vector<std::string> errors;
|
std::vector<std::string> errors;
|
||||||
|
|
|
@ -76,7 +76,7 @@ public:
|
||||||
static bool Read(CAddrMan& addr, CDataStream& ssPeers);
|
static bool Read(CAddrMan& addr, CDataStream& ssPeers);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Access to the banlist databases (banlist.json and banlist.dat) */
|
/** Access to the banlist database (banlist.json) */
|
||||||
class CBanDB
|
class CBanDB
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -95,11 +95,9 @@ public:
|
||||||
* Read the banlist from disk.
|
* Read the banlist from disk.
|
||||||
* @param[out] banSet The loaded list. Set if `true` is returned, otherwise it is left
|
* @param[out] banSet The loaded list. Set if `true` is returned, otherwise it is left
|
||||||
* in an undefined state.
|
* in an undefined state.
|
||||||
* @param[out] dirty Indicates whether the loaded list needs flushing to disk. Set if
|
|
||||||
* `true` is returned, otherwise it is left in an undefined state.
|
|
||||||
* @return true on success
|
* @return true on success
|
||||||
*/
|
*/
|
||||||
bool Read(banmap_t& banSet, bool& dirty);
|
bool Read(banmap_t& banSet);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,7 +18,7 @@ BanMan::BanMan(fs::path ban_file, CClientUIInterface* client_interface, int64_t
|
||||||
if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist…").translated);
|
if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist…").translated);
|
||||||
|
|
||||||
int64_t n_start = GetTimeMillis();
|
int64_t n_start = GetTimeMillis();
|
||||||
if (m_ban_db.Read(m_banned, m_is_dirty)) {
|
if (m_ban_db.Read(m_banned)) {
|
||||||
SweepBanned(); // sweep out unused entries
|
SweepBanned(); // sweep out unused entries
|
||||||
|
|
||||||
LogPrint(BCLog::NET, "Loaded %d banned node addresses/subnets %dms\n", m_banned.size(),
|
LogPrint(BCLog::NET, "Loaded %d banned node addresses/subnets %dms\n", m_banned.size(),
|
||||||
|
|
|
@ -88,7 +88,7 @@ private:
|
||||||
|
|
||||||
RecursiveMutex m_cs_banned;
|
RecursiveMutex m_cs_banned;
|
||||||
banmap_t m_banned GUARDED_BY(m_cs_banned);
|
banmap_t m_banned GUARDED_BY(m_cs_banned);
|
||||||
bool m_is_dirty GUARDED_BY(m_cs_banned);
|
bool m_is_dirty GUARDED_BY(m_cs_banned){false};
|
||||||
CClientUIInterface* m_client_interface = nullptr;
|
CClientUIInterface* m_client_interface = nullptr;
|
||||||
CBanDB m_ban_db;
|
CBanDB m_ban_db;
|
||||||
const int64_t m_default_ban_time;
|
const int64_t m_default_ban_time;
|
||||||
|
|
|
@ -52,8 +52,7 @@ FUZZ_TARGET_INIT(banman, initialize_banman)
|
||||||
const bool start_with_corrupted_banlist{fuzzed_data_provider.ConsumeBool()};
|
const bool start_with_corrupted_banlist{fuzzed_data_provider.ConsumeBool()};
|
||||||
bool force_read_and_write_to_err{false};
|
bool force_read_and_write_to_err{false};
|
||||||
if (start_with_corrupted_banlist) {
|
if (start_with_corrupted_banlist) {
|
||||||
const std::string sfx{fuzzed_data_provider.ConsumeBool() ? ".dat" : ".json"};
|
assert(WriteBinaryFile(banlist_file.string() + ".json",
|
||||||
assert(WriteBinaryFile(banlist_file.string() + sfx,
|
|
||||||
fuzzed_data_provider.ConsumeRandomLengthString()));
|
fuzzed_data_provider.ConsumeRandomLengthString()));
|
||||||
} else {
|
} else {
|
||||||
force_read_and_write_to_err = fuzzed_data_provider.ConsumeBool();
|
force_read_and_write_to_err = fuzzed_data_provider.ConsumeBool();
|
||||||
|
@ -114,6 +113,5 @@ FUZZ_TARGET_INIT(banman, initialize_banman)
|
||||||
(void)(banmap == banmap_read);
|
(void)(banmap == banmap_read);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fs::remove(banlist_file.string() + ".dat");
|
|
||||||
fs::remove(banlist_file.string() + ".json");
|
fs::remove(banlist_file.string() + ".json");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue