aboutsummaryrefslogtreecommitdiff
path: root/src/net.h
AgeCommit message (Collapse)Author
2016-09-19Merge #8688: Move static global randomizer seeds into CConnmanWladimir J. van der Laan
d9ff591 Move static global randomizer seeds into CConnman (Pieter Wuille)
2016-09-19Move static global randomizer seeds into CConnmanPieter Wuille
2016-09-14net: fix maxuploadtarget settingCory Fields
This was broken by 63cafa6329e1a. Note that while this fixes the settings, it doesn't fix the actual usage of -maxuploadtarget completely, as there is currently a bug in the nOptimisticBytesWritten accounting that causes a delayed response if the target is reached. That bug will be addressed separately.
2016-09-08net: move MAX_FEELER_CONNECTIONS into connmanCory Fields
2016-09-08Convert ForEachNode* functions to take a templated function argument rather ↵Jeremy Rubin
than a std::function to eliminate std::function overhead
2016-09-08Made the ForEachNode* functions in src/net.cpp more pragmatic and self ↵Jeremy Rubin
documenting
2016-09-08net: move vNodesDisconnected into CConnmanCory Fields
2016-09-08net: add nSendBufferMaxSize/nReceiveFloodSize to CConnection::OptionsCory Fields
2016-09-08net: Introduce CConnection::Options to avoid passing so many paramsCory Fields
2016-09-08net: Drop StartNode/StopNode and use CConnman directlyCory Fields
2016-09-08net: pass CClientUIInterface into CConnmanCory Fields
2016-09-08net: Pass best block known height into CConnmanCory Fields
CConnman then passes the current best height into CNode at creation time. This way CConnman/CNode have no dependency on main for height, and the signals only move in one direction. This also helps to prevent identity leakage a tiny bit. Before this change, an attacker could theoretically make 2 connections on different interfaces. They would connect fully on one, and only establish the initial connection on the other. Once they receive a new block, they would relay it to your first connection, and immediately commence the version handshake on the second. Since the new block height is reflected immediately, they could attempt to learn whether the two connections were correlated. This is, of course, incredibly unlikely to work due to the small timings involved and receipt from other senders. But it doesn't hurt to lock-in nBestHeight at the time of connection, rather than letting the remote choose the time.
2016-09-08net: move max/max-outbound to CConnmanCory Fields
2016-09-08net: move semOutbound to CConnmanCory Fields
2016-09-08net: move nLocalServices/nRelevantServices to CConnmanCory Fields
These are in-turn passed to CNode at connection time. This allows us to offer different services to different peers (or test the effects of doing so).
2016-09-08net: move SendBufferSize/ReceiveFloodSize to CConnmanCory Fields
2016-09-08net: move send/recv statistics to CConnmanCory Fields
2016-09-08net: SocketSendData returns written sizeCory Fields
2016-09-08net: move messageHandlerCondition to CConnmanCory Fields
2016-09-08net: move nLocalHostNonce to CConnmanCory Fields
This behavior seems to have been quite racy and broken. Move nLocalHostNonce into CNode, and check received nonces against all non-fully-connected nodes. If there's a match, assume we've connected to ourself.
2016-09-08net: move nLastNodeId to CConnmanCory Fields
2016-09-08net: move whitelist functions into CConnmanCory Fields
2016-09-08net: create generic functor accessors and move vNodes to CConnmanCory Fields
2016-09-08net: Add most functions needed for vNodes to CConnmanCory Fields
2016-09-08net: move added node functions to CConnmanCory Fields
2016-09-08net: Add oneshot functions to CConnmanCory Fields
2016-09-08net: move ban and addrman functions into CConnmanCory Fields
2016-09-08net: handle nodesignals in CConnmanCory Fields
2016-09-08net: move OpenNetworkConnection into CConnmanCory Fields
2016-09-08net: Move socket binding into CConnmanCory Fields
2016-09-08net: Pass CConnman around as neededCory Fields
2016-09-08net: Create CConnman to encapsulate p2p connectionsCory Fields
2016-09-08net: move CBanDB and CAddrDB out of net.h/cppCory Fields
This will eventually solve a circular dependency
2016-09-02Merge #8466: [Trivial] Do not shadow variables in networking codeWladimir J. van der Laan
b7c349d Do not shadow variables in networking code (Pavel Janík)
2016-08-23Added feeler connections increasing good addrs in the tried table.Ethan Heilman
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-08-15Do not shadow variables in networking codePavel Janík
2016-07-31net: narrow include scope after moving to netaddressCory Fields
Net functionality is no longer needed for CAddress/CAddrman/etc. now that CNetAddr/CService/CSubNet are dumb storage classes.
2016-06-22BIP141: Other consensus critical limits, and BIP145Pieter Wuille
Includes changes by Suhas Daftuar, Luke-jr, and mruddy.
2016-06-22BIP144: Handshake and relay (receiver side)Pieter Wuille
Service bit logic by Nicolas Dorier. Only download blocks from witness peers after fork.
2016-06-22BIP144: Serialization, hashes, relay (sender side)Pieter Wuille
Contains refactorings by Eric Lombrozo. Contains fixup by Nicolas Dorier. Contains cleanup of CInv::GetCommand by Alex Morcos
2016-06-19Add ability to fetch CNode by NodeIdMatt Corallo
2016-06-16Merge #8113: Rework addnode behaviourWladimir J. van der Laan
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-16Merge #8084: Add recently accepted blocks and txn to AttemptToEvictConnection.Wladimir J. van der Laan
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-15Add recently accepted blocks and txn to AttemptToEvictConnection.Gregory Maxwell
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-13Rework addnode behaviourPieter Wuille
* 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-13Introduce REQUIRED_SERVICES constantPieter Wuille
2016-06-13Introduce enum ServiceFlags for service flagsPieter Wuille
2016-06-13Verify that outbound connections have expected servicesPieter Wuille
2016-06-08Merge #8173: Use SipHash for node eviction (cont'd)Pieter Wuille
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-08Merge #8065: Addrman offline attemptsWladimir J. van der Laan
6182d10 Do not increment nAttempts by more than one for every Good connection. (Gregory Maxwell) c769c4a Avoid counting failed connect attempts when probably offline. (Gregory Maxwell)