mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 22:50:59 +01:00
Merge bitcoin/bitcoin#22098: [test, init] DNS seed querying logic
82b6f89819[style] Small style improvements to DNS parameters (Amiti Uttarwar)4c89e24f64[test] Test the delay before querying DNS seeds (Amiti Uttarwar)6395c8ed56[test] Test the interactions between -forcednsseed and -dnsseed (Amiti Uttarwar)6f6b7df6bd[init] Disallow starting up with conflicting paramters for -dnsseed and -forcednsseed (Amiti Uttarwar)26d0ffe4f2[test] Test -forcednsseed causes querying DNS seeds (Amiti Uttarwar)35851450a9[test] Test the interactions between -connect and -dnsseed (Amiti Uttarwar)75c05af361[test] Test logic to query DNS seeds with block-relay-only connections (Amiti Uttarwar)9c08719778[test] Introduce test logic to query DNS seeds (Amiti Uttarwar) Pull request description: This PR adds a DNS seed to the regtest chain params to enable testing the DNS seed querying logic of `CConnman::ThreadDNSAddressSeed` and relevant startup parameters. Adds coverage for the changes in #22013 (and then some). The main behavioral change to bitcoind is that this PR disallows starting up with conflicting parameters for `-dnsseed` and `-forcednsseed`. The tests include: * parameter interactions of different combinations of `-connect`, `-dnsseed` and `-forcednsseed` * the delay before querying DNS seeds depending on how many addresses are in the addrman * the behavior of `-forcednsseed` * skipping DNS querying if we have outbound full relay connections & not block-relay-only connections Huge props to mzumsande for identifying the timing technique for testing successful connections before running `ThreadDNSAddressSeed` 🙌🏽 ACKs for top commit: mzumsande: ACK82b6f89819jnewbery: reACK82b6f89819Tree-SHA512: 9f0c29bfbf99426727e79c0a25606ae09deab91a92e3c5cee7f84c3ca7503a8ac9ab85a85c51841d40b164ef8c991326070f0b2f41d075fb7985df26f6e95d6d
This commit is contained in:
@@ -426,7 +426,7 @@ void SetupServerArgs(ArgsManager& argsman)
|
||||
argsman.AddArg("-dnsseed", strprintf("Query for peer addresses via DNS lookup, if low on addresses (default: %u unless -connect used)", DEFAULT_DNSSEED), ArgsManager::ALLOW_BOOL, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-externalip=<ip>", "Specify your own public address", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-fixedseeds", strprintf("Allow fixed seeds if DNS seeds don't provide peers (default: %u)", DEFAULT_FIXEDSEEDS), ArgsManager::ALLOW_BOOL, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-forcednsseed", strprintf("Always query for peer addresses via DNS lookup (default: %u)", DEFAULT_FORCEDNSSEED), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-forcednsseed", strprintf("Always query for peer addresses via DNS lookup (default: %u)", DEFAULT_FORCEDNSSEED), ArgsManager::ALLOW_BOOL, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-listen", "Accept connections from outside (default: 1 if no -proxy or -connect)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-listenonion", strprintf("Automatically create Tor onion service (default: %d)", DEFAULT_LISTEN_ONION), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
argsman.AddArg("-maxconnections=<n>", strprintf("Maintain at most <n> connections to peers (default: %u). This limit does not apply to connections manually added via -addnode or the addnode RPC, which have a separate limit of %u.", DEFAULT_MAX_PEER_CONNECTIONS, MAX_ADDNODE_CONNECTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
@@ -848,6 +848,11 @@ bool AppInitParameterInteraction(const ArgsManager& args)
|
||||
return InitError(_("Prune mode is incompatible with -coinstatsindex."));
|
||||
}
|
||||
|
||||
// If -forcednsseed is set to true, ensure -dnsseed has not been set to false
|
||||
if (args.GetBoolArg("-forcednsseed", DEFAULT_FORCEDNSSEED) && !args.GetBoolArg("-dnsseed", DEFAULT_DNSSEED)){
|
||||
return InitError(_("Cannot set -forcednsseed to true when setting -dnsseed to false."));
|
||||
}
|
||||
|
||||
// -bind and -whitebind can't be set when not listening
|
||||
size_t nUserBind = args.GetArgs("-bind").size() + args.GetArgs("-whitebind").size();
|
||||
if (nUserBind != 0 && !args.GetBoolArg("-listen", DEFAULT_LISTEN)) {
|
||||
|
||||
Reference in New Issue
Block a user