mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 18:09:47 +01:00
net: remove useless call to IsReachable() from CConnman::Bind()
`CConnman::Bind()` is called without `BF_EXPLICIT` only when passed either `0.0.0.0` or `::`. For those addresses `IsReachable()` is always true (regardless of the `-onlynet=` setting!), meaning that the `if` condition never evaluates to true. `IsReachable()` is always true for the "any" IPv4 and IPv6 addresses because `CNetAddr::GetNetwork()` returns `NET_UNROUTABLE` instead of `NET_IPV4` or `NET_IPV6` and the network `NET_UNROUTABLE` is always considered reachable. It follows that `BF_EXPLICIT` is unnecessary, remove it too.
This commit is contained in:
parent
62c864605a
commit
9cbfe40d8a
14
src/net.cpp
14
src/net.cpp
@ -91,13 +91,12 @@ static constexpr auto FEELER_SLEEP_WINDOW{1s};
|
||||
/** Used to pass flags to the Bind() function */
|
||||
enum BindFlags {
|
||||
BF_NONE = 0,
|
||||
BF_EXPLICIT = (1U << 0),
|
||||
BF_REPORT_ERROR = (1U << 1),
|
||||
BF_REPORT_ERROR = (1U << 0),
|
||||
/**
|
||||
* Do not call AddLocal() for our special addresses, e.g., for incoming
|
||||
* Tor connections, to prevent gossiping them over the network.
|
||||
*/
|
||||
BF_DONT_ADVERTISE = (1U << 2),
|
||||
BF_DONT_ADVERTISE = (1U << 1),
|
||||
};
|
||||
|
||||
// The set of sockets cannot be modified while waiting
|
||||
@ -2204,9 +2203,6 @@ bool CConnman::Bind(const CService& addr_, unsigned int flags, NetPermissionFlag
|
||||
{
|
||||
const CService addr{MaybeFlipIPv6toCJDNS(addr_)};
|
||||
|
||||
if (!(flags & BF_EXPLICIT) && !IsReachable(addr)) {
|
||||
return false;
|
||||
}
|
||||
bilingual_str strError;
|
||||
if (!BindListenPort(addr, strError, permissions)) {
|
||||
if ((flags & BF_REPORT_ERROR) && m_client_interface) {
|
||||
@ -2226,13 +2222,13 @@ bool CConnman::InitBinds(const Options& options)
|
||||
{
|
||||
bool fBound = false;
|
||||
for (const auto& addrBind : options.vBinds) {
|
||||
fBound |= Bind(addrBind, (BF_EXPLICIT | BF_REPORT_ERROR), NetPermissionFlags::None);
|
||||
fBound |= Bind(addrBind, BF_REPORT_ERROR, NetPermissionFlags::None);
|
||||
}
|
||||
for (const auto& addrBind : options.vWhiteBinds) {
|
||||
fBound |= Bind(addrBind.m_service, (BF_EXPLICIT | BF_REPORT_ERROR), addrBind.m_flags);
|
||||
fBound |= Bind(addrBind.m_service, BF_REPORT_ERROR, addrBind.m_flags);
|
||||
}
|
||||
for (const auto& addr_bind : options.onion_binds) {
|
||||
fBound |= Bind(addr_bind, BF_EXPLICIT | BF_DONT_ADVERTISE, NetPermissionFlags::None);
|
||||
fBound |= Bind(addr_bind, BF_DONT_ADVERTISE, NetPermissionFlags::None);
|
||||
}
|
||||
if (options.bind_on_any) {
|
||||
struct in_addr inaddr_any;
|
||||
|
Loading…
Reference in New Issue
Block a user