Commit Graph

580 Commits

Author SHA1 Message Date
Cory Fields
91584b2ab0 net: don't import std namespace 2018-10-18 21:38:57 +03:00
Kaz Wesley
d8ebc0d4fc fix race that could fail to persist a ban 2018-10-18 21:36:45 +03:00
EthanHeilman
51c23024eb Fix de-serialization bug where AddrMan is corrupted after exception 2018-10-18 21:32:13 +03:00
Gregory Maxwell
350a2d9b50 More comments on the design of AttemptToEvictConnection.
Some developers clearly don't get this and have been posting
 "improvements" that create clear vulnerabilities.  It should
 have been better explained in the code, since the design
 is somewhat subtle and getting it right is important.
2018-10-18 21:23:43 +03:00
Cory Fields
6c6ed197af net: manually resolve dns seed sources
Note: Some seeds aren't actually returning an IP for their name entries, so
they're being added to addrman with a source of [::].

This commit shouldn't change that behavior, for better or worse.
2018-10-17 22:17:45 +03:00
Cory Fields
52147e1b80 net: require lookup functions to specify all arguments
To make it clear where DNS resolves are happening
2018-10-17 22:17:28 +03:00
Gregory Maxwell
e577b5c7e1 Only send one GetAddr response per connection. 2018-10-17 22:14:44 +03:00
Chris Wheeler
ea8bac6c36 Typo fixes in comments 2018-10-17 22:12:07 +03:00
21E14
fcc23c5c63 Double semicolon cleanup. 2018-10-17 22:10:51 +03:00
lateminer
786436baef Make it compile 2018-10-17 21:37:53 +03:00
Gregory Maxwell
89655c3a1e Remove unneeded feerate param from RelayTransaction/AcceptToMemoryPool. 2018-10-17 20:22:44 +03:00
Gregory Maxwell
16b0e12385 Do not use mempool for GETDATA for tx accepted after the last mempoolreq 2018-10-17 19:56:28 +03:00
Gregory Maxwell
c41eb3a831 Move bloom and feerate filtering to just prior to tx sending. 2018-10-17 19:47:32 +03:00
Pieter Wuille
eeded98dce Handle mempool requests in send loop, subject to trickle
By eliminating queued entries from the mempool response and responding only at
trickle time, this makes the mempool no longer leak transaction arrival order
information (as the mempool itself is also sorted)-- at least no more than
relay itself leaks it.
2018-10-17 19:45:45 +03:00
Matt Corallo
1ce3308431 Add ability to fetch CNode by NodeId 2018-10-17 19:22:59 +03:00
lateminer
f7422db2f7 Update to Core 0.12.2 2018-10-14 19:07:51 +03:00
Alex Morcos
b821da64ef Implement "feefilter" P2P message. 2018-10-13 15:44:02 +03:00
lateminer
b35f06eda3 Update code with PACKAGE_NAME and COPYRIGHT_HOLDERS 2018-10-13 13:49:46 +03:00
Wladimir J. van der Laan
e0de81556a net: Add fRelayTxes flag
Add a fRelayTxes to keep track of the relay transaction flag
we send to other peers.
2018-01-06 01:05:02 +03:00
janko33bd
d33b90ef4b back to 8, remove missed log 2017-05-31 22:10:03 +02:00
janko33bd
2fdd12b2ea Blackcoin Lore 2017-05-30 21:33:31 +02:00
Alex Morcos
b654842029 Populate services in GetLocalAddress
Previously if we didn't have any local addresses, GetLocalAddress would return
0.0.0.0 and then we'd swap in a peer's notion of our address in AdvertiseLocal,
but then nServices would never get set.

Github-Pull: #10424
Rebased-From: 307013469f9a3b8f13d3eb9dbeea419a55148493
2017-05-22 12:57:52 +02:00
Gregory Maxwell
3a3bcbf775 Use RelevantServices instead of node_network in AttemptToEvict.
Use of node_network here is really meant to be a proxy of "likely to
 send us blocks in the future".  RelevantServices is the right criteria
 now.

Github-Pull: #9052
Rebased-From: d32036a47d9ccdc38628a7a75bb8b711af462e4f
2016-12-02 07:41:11 +00:00
MarcoFalke
58d4fa7da3 [net] Remove assert(nMaxInbound > 0)
nMaxInbound might very well be 0 or -1, if the user prefers to keep
a small number of maxconnections.

Note: nMaxInbound of -1 means that the user set maxconnections
to 8 or less, but we still want to keep an additional slot for
the feeler connection.

Github-Pull: #9008
Rebased-From: fa1c3c2eb0a1853ed0e0662fc2bdbca51e05ccf5
2016-10-25 19:29:23 +02:00
Wladimir J. van der Laan
0dbc48a5bd nMaxOutbound is MAX_OUTBOUND_CONNECTIONS on 0.13
Github-Pull: #8949
2016-10-19 11:50:15 +02:00
Gregory Maxwell
91ae0b06b9 Make dnsseed's definition of acute need include relevant services.
We normally prefer to connect to peers offering the relevant services.

If we're not connected to enough peers with relevant services, we
 probably don't know about them and could use dnsseed's help.

Github-Pull: #8949
Rebased-From: 46304791353d2bb61004a035869612620c30b4eb
2016-10-19 11:24:12 +02:00
Gregory Maxwell
33cd5539b2 Be more aggressive in connecting to peers with relevant services.
Only allow skipping relevant services until there are four outbound
 connections up.

This avoids quickly filling up with peers lacking the relevant
 services when addrman has few or none of them.

Github-Pull: #8949
Rebased-From: 9583477288072e203541b747fcffe8d50cfefb8d
2016-10-19 11:23:53 +02:00
Matt Corallo
685e4c78f8 Remove bogus assert on number of oubound connections.
This value can be significantly higher if the users uses addnode

Github-Pull: #8944
Rebased-From: 1ab21cf344ed0547de5ae679b7e479cb4b1a923b
2016-10-18 14:41:42 +02:00
Matt Corallo
9aa0c15972 Comment that most dnsseeds only support some service bits combos
Github-Pull: #8940
Rebased-From: 504c72ad346a1b619f1fc58d0edce91ec955a67d
2016-10-17 19:42:58 +02:00
Jonas Schnelli
23feab1f38 Remove maxuploadtargets recommended minimum
Github-Pull: #8712
Rebased-From: 1b6bcdd3aa379a50c960e23d7c55db8294e76f7f
2016-09-26 16:43:28 +02:00
Wladimir J. van der Laan
42ea51a65f net: No longer send local address in addrMe
After #8594 the addrFrom sent by a node is not used anymore at all,
so don't bother sending it.

Also mitigates the privacy issue in (#8616). It doesn't completely solve
the issue as GetLocalAddress is also called in AdvertiseLocal, but at
least when advertising addresses it stands out less as *our* address.

Github-Pull: #8740
Rebased-From: d9c99c3058c90f4f7075cf5c495b8dcd2e7519a7
2016-09-21 02:43:47 +00:00
leijurv
befe654f0f various typos
Github-Pull: #8505
Rebased-From: 1aacfc2da521a8e0d718e9ac561d9b2d7916eb0b
2016-09-21 02:43:47 +00:00
Pieter Wuille
3b354d213f Add extra message to avoid a long 'Loading banlist'
Github-Pull: #8392
Rebased-From: aa59f2ed3f378c02159e41ff3ae2df76ef850577
2016-09-21 02:43:47 +00:00
Ethan Heilman
2611ad79a5 Added feeler connections increasing good addrs in the tried table.
Tests if addresses are online or offline by briefly connecting to them. These short lived connections are referred to as feeler connections. Feeler connections are designed to increase the number of fresh online addresses in tried by selecting and connecting to addresses in new. One feeler connection is attempted on average once every two minutes.

This change was suggested as Countermeasure 4 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman,
Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report
2015/263. March 2015.
2016-09-07 16:17:40 +02:00
Pieter Wuille
2b1f6f9ccf BIP141: Other consensus critical limits, and BIP145
Includes changes by Suhas Daftuar, Luke-jr, and mruddy.
2016-06-22 15:43:00 +02:00
Pieter Wuille
b8a97498df BIP144: Handshake and relay (receiver side)
Service bit logic by Nicolas Dorier.

Only download blocks from witness peers after fork.
2016-06-22 15:42:59 +02:00
Matt Corallo
927f8eede0 Add ability to fetch CNode by NodeId 2016-06-19 23:06:55 -07:00
Wladimir J. van der Laan
3f89a534ac Merge #8113: Rework addnode behaviour
1a5a4e6 Randomize name lookup result in ConnectSocketByName (Pieter Wuille)
f9f5cfc Prevent duplicate connections where one is by name and another by ip (Pieter Wuille)
1111b80 Rework addnode behaviour (Pieter Wuille)
2016-06-16 12:06:51 +02:00
Wladimir J. van der Laan
e4bb4a85a5 Merge #8084: Add recently accepted blocks and txn to AttemptToEvictConnection.
6ee7f05 Allow disconnecting a netgroup with only one member in eviction. (Gregory Maxwell)
5d0ca81 Add recently accepted blocks and txn to AttemptToEvictConnection. (Gregory Maxwell)
2016-06-16 11:03:52 +02:00
Gregory Maxwell
6ee7f05622 Allow disconnecting a netgroup with only one member in eviction.
With the latest additions there are enough protective measures that
 we can take the training wheels off.
2016-06-15 20:19:13 +00:00
Gregory Maxwell
5d0ca81f74 Add recently accepted blocks and txn to AttemptToEvictConnection.
This protects any not-already-protected peers who were the most
 recent four to relay transactions and most recent four to send
 blocks to us.
2016-06-15 20:19:07 +00:00
Pieter Wuille
bc0a895d81 Do not set extra flags for unfiltered DNS seed results 2016-06-15 19:31:58 +02:00
Pieter Wuille
f9f5cfc506 Prevent duplicate connections where one is by name and another by ip 2016-06-13 23:53:08 +02:00
Pieter Wuille
1111b80df8 Rework addnode behaviour
* Use CNode::addeName to track whether a connection to a name is already open
  * A new connection to a previously-connected by-name addednode is only opened when
    the previous one closes (even if the name starts resolving to something else)
  * At most one connection is opened per addednode (even if the name resolves to multiple)
* Unify the code between ThreadOpenAddedNodeConnections and getaddednodeinfo
  * Information about open connections is always returned, and the dns argument becomes a dummy
  * An IP address and inbound/outbound is only reported for the (at most 1) open connection
2016-06-13 23:53:06 +02:00
Pieter Wuille
ecd7fd37c8 Introduce REQUIRED_SERVICES constant 2016-06-13 17:40:16 +02:00
Pieter Wuille
ee06e04369 Introduce enum ServiceFlags for service flags 2016-06-13 17:40:16 +02:00
Pieter Wuille
15bf863219 Don't require services in -addnode 2016-06-13 17:40:16 +02:00
Pieter Wuille
5e7ab16d29 Only store and connect to NODE_NETWORK nodes 2016-06-13 17:40:16 +02:00
Pieter Wuille
fc83f18153 Verify that outbound connections have expected services 2016-06-13 17:40:16 +02:00
Pieter Wuille
4286f43025 Merge #8173: Use SipHash for node eviction (cont'd)
eebc232 test: Add more test vectors for siphash (Wladimir J. van der Laan)
8884830 Use C++11 thread-safe static initializers (Pieter Wuille)
c31b24f Use 64-bit SipHash of netgroups in eviction (Pieter Wuille)
9bf156b Support SipHash with arbitrary byte writes (Pieter Wuille)
053930f Avoid recalculating vchKeyedNetGroup in eviction logic. (Patrick Strateman)
2016-06-08 18:32:34 +02:00