aboutsummaryrefslogtreecommitdiff
path: root/src/net.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* | | net: require lookup functions to specify all argumentsCory Fields2016-04-171-2/+2
|/ / | | | | | | To make it clear where DNS resolves are happening
* | Merge #7856: Only send one GetAddr response per connection.Wladimir J. van der Laan2016-04-151-0/+1
|\ \ | | | | | | | | | 66b0724 Only send one GetAddr response per connection. (Gregory Maxwell)
| * | Only send one GetAddr response per connection.Gregory Maxwell2016-04-111-0/+1
| | | | | | | | | | | | | | | | | | This conserves resources from abusive peers that just send getaddr in a loop. Also makes correlating addr messages against INVs less effective.
* | | Change mapRelay to store CTransactionsPieter Wuille2016-04-141-13/+4
| | |
* | | Use txid as key in mapAlreadyAskedForSuhas Daftuar2016-04-111-3/+3
|/ / | | | | | | | | | | | | Previously we used the CInv that would be sent to the peer announcing the transaction as the key, but using the txid instead allows us to decouple the p2p layer from the application logic (which relies on this map to avoid duplicate tx requests).
* | Implement "feefilter" P2P message.Alex Morcos2016-03-211-8/+12
| | | | | | | | The "feefilter" p2p message is used to inform other nodes of your mempool min fee which is the feerate that any new transaction must meet to be accepted to your mempool. This will allow them to filter invs to you according to this feerate.
* | Remove vfReachable and modify IsReachable to only use vfLimited.Patrick Strateman2016-02-171-11/+1
| | | | | | | | We do not know that a class of Network is reachable, only that it is not.
* | fix spelling of advertise in src and docjloughry2016-02-121-2/+2
|/
* Merge #7192: Unify product name to as few places as possibleWladimir J. van der Laan2016-02-041-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 027fdb8 When/if the copyright line does not mention Bitcoin Core developers, add a second line to copyrights in -version, About dialog, and splash screen (Luke Dashjr) cc2095e Rewrite FormatParagraph to handle newlines within input strings correctly (Luke Dashjr) cddffaf Bugfix: Include COPYRIGHT_HOLDERS_SUBSTITUTION in Makefile substitutions so it gets passed to extract-strings correctly (Luke Dashjr) 29598e4 Move PACKAGE_URL to configure.ac (Luke Dashjr) 78ec83d splashscreen: Resize text to fit exactly (Luke Dashjr) 3cae140 Bugfix: Actually use _COPYRIGHT_HOLDERS_SUBSTITUTION everywhere (Luke Dashjr) 4d5a3df Bugfix: gitian-descriptors: Add missing python-setuptools requirement for OS X (biplist module) (Luke Dashjr) e4ab5e5 Bugfix: Correct copyright year in Mac DMG background image (Luke Dashjr) 917b1d0 Set copyright holders displayed in notices separately from the package name (Luke Dashjr) c39a6ff Travis & gitian-osx: Use depends for ds_store and mac_alias modules (Luke Dashjr) 902ccde depends: Add mac_alias to depends (Luke Dashjr) 82a2d98 depends: Add ds_store to depends (Cory Fields) de619a3 depends: Pass PYTHONPATH along to configure (Cory Fields) e611b6e macdeploy: Use rsvg-convert rather than cairosvg (Luke Dashjr) 63bcdc5 More complicated package name substitution for Mac deployment (Luke Dashjr) 1a6c67c Parameterise 2009 in translatable copyright strings (Luke Dashjr) d5f4683 Unify package name to as few places as possible without major changes (Luke Dashjr)
| * Merge branch 'master' into single_prodnameLuke Dashjr2016-02-031-50/+85
| |\
| * | Unify package name to as few places as possible without major changesLuke Dashjr2015-12-141-1/+1
| | |
* | | Merge #7458: [Net] peers.dat, banlist.dat recreated when missingWladimir J. van der Laan2016-02-041-2/+7
|\ \ \ | |_|/ |/| | | | | c77c662 peers.dat, banlist.dat recreated when missing (kirkalx)
| * | peers.dat, banlist.dat recreated when missingkirkalx2016-02-041-2/+7
| | |
* | | Decide eviction group ties based on time.Gregory Maxwell2016-02-011-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corrects a bug the case of tying group size where the code may fail to select the group with the newest member. Since newest time is the final selection criteria, failing to break ties on it on the step before can undermine the final selection. Tied netgroups are very common. (cherry picked from commit 8e09f914f8ec66301257358b250e9a61befadd95)
* | | Do not absolutely protect local peers from eviction.Gregory Maxwell2016-02-011-2/+0
|/ / | | | | | | | | | | | | | | | | With automatic tor HS support in place we should probably not be providing absolute protection for local peers, since HS inbound could be used to attack pretty easily. Instead, this counts on the latency metric inside AttemptToEvictConnection to privilege actually local peers. (cherry picked from commit 46dbcd4833115401fecbb052365b4c7725874414)
* | Merge #7350: Banlist updatesWladimir J. van der Laan2016-01-201-24/+30
|\ \ | | | | | | | | | | | | | | | | | | e8600c9 banlist (bugfix): allow CNode::SweepBanned() to run on interval (Philip Kaufmann) 2977c24 banlist: add more banlist infos to log / add GUI signal (Philip Kaufmann) ce479aa banlist: better handling of banlist in StartNode() (Philip Kaufmann) 57c77fe banlist: update set dirty to be more fine grained (Philip Kaufmann)
| * \ Merge branch 'master' into 20150703_banlist_updatesLuke Dashjr2016-01-151-18/+161
| |\ \
| * | | banlist (bugfix): allow CNode::SweepBanned() to run on intervalPhilip Kaufmann2015-10-021-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | - allows CNode::SweepBanned() to run, even if !CNode::BannedSetIsDirty(), because if nBanUntil is over we want the ban to be disabled for these nodes
| * | | banlist: add more banlist infos to log / add GUI signalPhilip Kaufmann2015-10-021-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - to match the peers.dat handling also supply a debug.log entry for how many entries were loaded from banlist.dat and how long it took - add a GUI init message for loading the banlist (same as with peers.dat) - move the same message for peers.dat upwards in the code, to be able to reuse the timing variable nStart and also just log, if our read from peers.dat didn't fail
| * | | banlist: better handling of banlist in StartNode()Philip Kaufmann2015-10-021-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - only start working on/with banlist data, if reading in the banlist from disk didn't fail - as CNode::setBannedIsDirty is false (default) when reading fails, we don't need to explicitly set it to false to prevent writing banlist.dat in that case either
| * | | banlist: update set dirty to be more fine grainedPhilip Kaufmann2015-10-021-7/+4
| | | | | | | | | | | | | | | | | | | | - move the SetBannedSetDirty(false) call from DumpData() into DumpBanlist() - ensure we only set false, if the write succeeded
* | | | Typo fixes in commentsChris Wheeler2016-01-171-1/+1
| |/ / |/| |
* | | Merge pull request #7205Wladimir J. van der Laan2016-01-051-1/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | fa71669 [devtools] Use git pretty-format for year parsing (MarcoFalke) fa24439 Bump copyright headers to 2015 (MarcoFalke) fa6ad85 [devtools] Rewrite fix-copyright-headers.py (MarcoFalke)
| * | | Bump copyright headers to 2015MarcoFalke2015-12-131-1/+1
| | | |
* | | | Double semicolon cleanup.21E142015-12-301-1/+1
| | | |
* | | | Replace trickle nodes with per-node/message Poisson delaysPieter Wuille2015-12-111-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to have a trickle node, a node which was chosen in each iteration of the send loop that was privileged and allowed to send out queued up non-time critical messages. Since the removal of the fixed sleeps in the network code, this resulted in fast and attackable treatment of such broadcasts. This pull request changes the 3 remaining trickle use cases by random delays: * Local address broadcast (while also removing the the wiping of the seen filter) * Address relay * Inv relay (for transactions; blocks are always relayed immediately) The code is based on older commits by Patrick Strateman.
* | | | net: Add and document network messages in protocol.hWladimir J. van der Laan2015-12-101-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Avoids string typos (by making the compiler check) - Makes it easier to grep for handling/generation of a certain message type - Refer directly to documentation by following the symbol in IDE - Move list of valid message types to protocol.cpp: protocol.cpp is a more appropriate place for this, and having the array there makes it easier to keep things consistent.
* | | | net: Account for `sendheaders` `verack` messagesWladimir J. van der Laan2015-12-071-1/+2
| | | | | | | | | | | | | | | | Looks like these were forgotten in #6589.
* | | | log bytes recv/sent per commandJonas Schnelli2015-12-071-1/+27
| | | |
* | | | Merge pull request #7133Wladimir J. van der Laan2015-12-031-1/+2
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | aa4b0c2 When not filtering blocks, getdata sends more in one test (Pieter Wuille) d41e44c Actually only use filterInventoryKnown with MSG_TX inventory messages. (Gregory Maxwell) b6a0da4 Only use filterInventoryKnown with MSG_TX inventory messages. (Patick Strateman) 6b84935 Rename setInventoryKnown filterInventoryKnown (Patick Strateman) e206724 Remove mruset as it is no longer used. (Gregory Maxwell) ec73ef3 Replace setInventoryKnown with a rolling bloom filter. (Gregory Maxwell)
| * | | Rename setInventoryKnown filterInventoryKnownPatick Strateman2015-11-301-2/+2
| | | |
| * | | Replace setInventoryKnown with a rolling bloom filter.Gregory Maxwell2015-11-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mruset setInventoryKnown was reduced to a remarkably small 1000 entries as a side effect of sendbuffer size reductions in 2012. This removes setInventoryKnown filtering from merkleBlock responses because false positives there are especially unattractive and also because I'm not sure if there aren't race conditions around the relay pool that would cause some transactions there to be suppressed. (Also, ProcessGetData was accessing setInventoryKnown without taking the required lock.)
* | | | Merge pull request #7079Wladimir J. van der Laan2015-12-011-1/+5
|\ \ \ \ | |/ / / |/| | | | | | | | | | | ebb25f4 Limit setAskFor and retire requested entries only when a getdata returns. (Gregory Maxwell) 5029698 prevent peer flooding request queue for an inv (kazcw)
| * | | Limit setAskFor and retire requested entries only when a getdata returns.Gregory Maxwell2015-11-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The setAskFor duplicate elimination was too eager and removed entries when we still had no getdata response, allowing the peer to keep INVing and not responding.
| * | | prevent peer flooding request queue for an invkazcw2015-11-231-0/+4
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mapAlreadyAskedFor does not keep track of which peer has a request queued for a particular tx. As a result, a peer can blind a node to a tx indefinitely by sending many invs for the same tx, and then never replying to getdatas for it. Each inv received will be placed 2 minutes farther back in mapAlreadyAskedFor, so a short message containing 10 invs would render that tx unavailable for 20 minutes. This is fixed by disallowing a peer from having more than one entry for a particular inv in mapAlreadyAskedFor at a time.
* / | Constrain constant values to a single location in codeLuke Dashjr2015-11-281-5/+4
|/ /
* | Add relaytxes status to getpeerinfoPeter Todd2015-11-201-0/+1
| |
* | Use DEFAULT_BLOCKSONLY and DEFAULT_WHITELISTALWAYSRELAY constantsPatick Strateman2015-11-141-1/+1
| |
* | Add blocksonly modePatick Strateman2015-11-141-1/+1
| |
* | [net] Cleanup maxuploadtargetMarcoFalke2015-11-121-2/+2
| | | | | | | | | | | | | | * log: nMaxOutboundLimit is in bytes * log: Hide misleading -maxuploadtarget=0 warning * qa : Minor cleanup to maxuploadtarget rpc tests * net: Use DEFAULT_MAX_UPLOAD_TARGET = 0
* | torcontrol improvements and fixesWladimir J. van der Laan2015-11-121-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Force AUTHCOOKIE size to be 32 bytes: This provides protection against an attack where a process pretends to be Tor and uses the cookie authentication method to nab arbitrary files such as the wallet - torcontrol logging - fix cookie auth - add HASHEDPASSWORD auth, fix fd leak when fwrite() fails - better error reporting when cookie file is not ok - better init/shutdown flow - stop advertizing service when disconnected from tor control port - COOKIE->SAFECOOKIE auth
* | net: Automatically create hidden service, listen on TorWladimir J. van der Laan2015-11-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket API, to create and destroy 'ephemeral' hidden services programmatically. https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service This means that if Tor is running (and proper authorization is available), bitcoin automatically creates a hidden service to listen on, without user manual configuration. This will positively affect the number of available .onion nodes. - When the node is started, connect to Tor through control socket - Send `ADD_ONION` command - First time: - Make it create a hidden service key - Save the key in the data directory for later usage - Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on). - Keep control socket connection open for as long node is running. The hidden service will (by default) automatically go away when the connection is closed.
* | Introduce -maxuploadtargetJonas Schnelli2015-10-261-0/+94
| | | | | | | | | | | | | | * -maxuploadtarget can be set in MiB * if <limit> - ( time-left-in-24h-cycle / 600 * MAX_BLOCK_SIZE ) has reach, stop serve blocks older than one week and filtered blocks * no action if limit has reached, no guarantee that the target will not be surpassed * add outbound limit informations to rpc getnettotals
* | Set TCP_NODELAY on P2P sockets.Gregory Maxwell2015-10-221-0/+12
|/ | | | | | | | Nagle appears to be a significant contributor to latency now that the static sleeps are gone. Most of our messages are relatively large compared to IP + TCP so I do not expect this to create enormous overhead. This may also reduce traffic burstyness somewhat.
* net: correctly initialize nMinPingUsecTimeWladimir J. van der Laan2015-09-041-0/+1
| | | | | | `nMinPingUsecTime` was left uninitialized in CNode. The correct initialization for a minimum-until-now is int64_t's max value, so initialize it to that. Thanks @MarcoFalke for noticing.
* Report minimum ping time in getpeerinfoMatt Corallo2015-09-031-0/+1
|
* Merge pull request #6374Wladimir J. van der Laan2015-09-031-59/+217
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 027de94 Use network group instead of CNetAddr in final pass to select node to disconnect (Patrick Strateman) 000c18a Fix comment (Patrick Strateman) fed3094 Acquire cs_vNodes before changing refrence counts (Patrick Strateman) 69ee1aa CNodeRef copy constructor and assignment operator (Patrick Strateman) dc81dd0 Return false early if vEvictionCandidates is empty (Patrick Strateman) 17f3533 Better support for nodes with non-standard nMaxConnections (Patrick Strateman) 1317cd1 RAII wrapper for CNode* (Patrick Strateman) df23937 Add comments to AttemptToEvictConnection (Patrick Strateman) a8f6e45 Remove redundant whiteconnections option (Patrick Strateman) b105ba3 Prefer to disconnect peers in favor of whitelisted peers (Patrick Strateman) 2c70153 AttemptToEvictConnection (Patrick Strateman) 4bac601 Record nMinPingUsecTime (Patrick Strateman) ae037b7 Refactor: Move failure conditions to the top of AcceptConnection (Patrick Strateman) 1ef4817 Refactor: Bail early in AcceptConnection (Patrick Strateman) 541a1dd Refactor: AcceptConnection (Patrick Strateman)
| * Use network group instead of CNetAddr in final pass to select node to disconnectPatrick Strateman2015-08-301-10/+10
| |
| * Fix commentPatrick Strateman2015-08-251-1/+1
| |
| * Acquire cs_vNodes before changing refrence countsPatrick Strateman2015-08-251-2/+12
| |