aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| | * | | | | | | | | | net: parse reject earlierCory Fields2017-02-131-26/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this change, all messages were ignored until a VERSION message was received, as well as possibly incurring a ban score. Since REJECT messages can be sent at any time (including as a response to a bad VERSION message), make sure to always parse them. Moving this parsing up keeps it from being caught in the if (pfrom->nVersion == 0) check below.
| | * | | | | | | | | | net: correctly ban before the handshake is completeCory Fields2017-02-131-23/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7a8c251901 made a change to avoid getting into SendMessages() until the version handshake (VERSION + VERACK) is complete. That was done to avoid leaking out messages to nodes who could connect, but never bothered sending us their version/verack. Unfortunately, the ban tally and possible disconnect are done as part of SendMessages(). So after 7a8c251901, if a peer managed to do something bannable before completing the handshake (say send 100 non-version messages before their version), they wouldn't actually end up getting disconnected/banned. That's fixed here by checking the banscore as part of ProcessMessages() in addition to SendMessages().
| * | | | | | | | | | | Merge #9715: Disconnect peers which we do not receive VERACKs from within 60 secWladimir J. van der Laan2017-02-144-12/+135
| |\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 66f861a Add a test for P2P inactivity timeouts (Matt Corallo) b436f92 qa: Expose on-connection to mininode listeners (Matt Corallo) 8aaba7a qa: mininode learns when a socket connects, not its first action (Matt Corallo) 2cbd119 Disconnect peers which we do not receive VERACKs from within 60 sec (Matt Corallo)
| | * | | | | | | | | | | Add a test for P2P inactivity timeoutsMatt Corallo2017-02-092-0/+104
| | | | | | | | | | | | |
| | * | | | | | | | | | | qa: Expose on-connection to mininode listenersMatt Corallo2017-02-081-0/+2
| | | | | | | | | | | | |
| | * | | | | | | | | | | qa: mininode learns when a socket connects, not its first actionMatt Corallo2017-02-081-12/+24
| | | | | | | | | | | | |
| | * | | | | | | | | | | Disconnect peers which we do not receive VERACKs from within 60 secMatt Corallo2017-02-071-0/+5
| | | |_|/ / / / / / / / | | |/| | | | | | | | |
| * | | | | | | | | | | Merge #9682: Require timestamps for importmulti keysWladimir J. van der Laan2017-02-144-13/+77
| |\ \ \ \ \ \ \ \ \ \ \ | | | |_|_|/ / / / / / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 266a811 Use MTP for importmulti "now" timestamps (Russell Yanofsky) 3cf9917 Add test to check new importmulti "now" value (Russell Yanofsky) 442887f Require timestamps for importmulti keys (Russell Yanofsky)
| | * | | | | | | | | | Use MTP for importmulti "now" timestampsRussell Yanofsky2017-02-102-2/+2
| | | | | | | | | | | |
| | * | | | | | | | | | Add test to check new importmulti "now" valueRussell Yanofsky2017-02-102-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Easiest way to test this was to expose the timestamp via the validateaddress RPC (which was already looking up and returning key metadata).
| | * | | | | | | | | | Require timestamps for importmulti keysRussell Yanofsky2017-02-103-9/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Additionally, accept a "now" timestamp, to allow avoiding rescans for keys which are known never to have been used. Note that the behavior when "now" is specified is slightly different than the previous behavior when no timestamp was specified at all. Previously, when no timestamp was specified, it would avoid rescanning during the importmulti call, but set the key's nCreateTime value to 1, which would not prevent future block reads in later ScanForWalletTransactions calls. With this change, passing a "now" timestamp will set the key's nCreateTime to the current block time instead of 1. Fixes #9491
| * | | | | | | | | | | Merge #9735: devtools: Handle Qt formatting characters edge-case in ↵Wladimir J. van der Laan2017-02-149-222/+1518
| |\ \ \ \ \ \ \ \ \ \ \ | | |_|_|_|_|/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | update-translations.py 7179e7c qt: Periodic translations update (Wladimir J. van der Laan) 5e903a5 devtools: Handle Qt formatting characters edge-case in update-translations.py (Wladimir J. van der Laan)
| | * | | | | | | | | | qt: Periodic translations updateWladimir J. van der Laan2017-02-108-222/+1510
| | | | | | | | | | | |
| | * | | | | | | | | | devtools: Handle Qt formatting characters edge-case in update-translations.pyWladimir J. van der Laan2017-02-101-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If both numeric format specifiers and "others" are used, assume we're dealing with a Qt-formatted message. In the case of Qt formatting (see https://doc.qt.io/qt-5/qstring.html#arg) only numeric formats are replaced at all. This means "(percentage: %1%)" is valid (which was introduced in #9461), without needing any kind of escaping that would be necessary for strprintf. Without this, this function would wrongly detect '%)' as a printf format specifier.
| * | | | | | | | | | | Merge #9736: Pre-0.14.0 hardcoded seeds updateWladimir J. van der Laan2017-02-115-1614/+2084
| |\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a60677e Pre-0.14.0 hardcoded seeds update (Wladimir J. van der Laan) bfa9393 contrib/seeds: Update PATTERN_AGENT (Wladimir J. van der Laan) 4dfac2c Update seeds tooling to Python 3 (Wladimir J. van der Laan)
| | * | | | | | | | | | | Pre-0.14.0 hardcoded seeds updateWladimir J. van der Laan2017-02-102-1600/+2062
| | | | | | | | | | | | |
| | * | | | | | | | | | | contrib/seeds: Update PATTERN_AGENTWladimir J. van der Laan2017-02-102-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gmaxwell: Adds the newest versions, drops everything multiple softforks ago.
| | * | | | | | | | | | | Update seeds tooling to Python 3Wladimir J. van der Laan2017-02-103-13/+18
| | |/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All the other tooling scripts require Python 3, it makes sense to do so here too. Also document the dependency on python3-dnspython.
| * | | | | | | | | | | Merge #9708: Clean up all known races/platform-specific UB at the time PR ↵Pieter Wuille2017-02-103-45/+105
| |\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | was opened db2dc7a Move CNode::addrLocal access behind locked accessors (Matt Corallo) 036073b Move CNode::addrName accesses behind locked accessors (Matt Corallo) d8f2b8a Make nTimeBestReceived atomic (Matt Corallo) 22b4966 Move [clean|str]SubVer writes/copyStats into a lock (Matt Corallo) 0f31872 Make nServices atomic (Matt Corallo) 96f42d8 Make nStartingHeight atomic (Matt Corallo) 512731b Access fRelayTxes with cs_filter lock in copyStats (Matt Corallo) ae683c1 Avoid copying CNodeStats to make helgrind OK with buggy std::string (Matt Corallo) 644f123 Make nTimeConnected const in CNode (Matt Corallo) 321d0fc net: fix a few races. Credit @TheBlueMatt (Cory Fields)
| | * | | | | | | | | | | Move CNode::addrLocal access behind locked accessorsMatt Corallo2017-02-103-7/+29
| | | | | | | | | | | | |
| | * | | | | | | | | | | Move CNode::addrName accesses behind locked accessorsMatt Corallo2017-02-103-10/+30
| | | | | | | | | | | | |
| | * | | | | | | | | | | Make nTimeBestReceived atomicMatt Corallo2017-02-101-1/+1
| | | | | | | | | | | | |
| | * | | | | | | | | | | Move [clean|str]SubVer writes/copyStats into a lockMatt Corallo2017-02-103-4/+13
| | | | | | | | | | | | |
| | * | | | | | | | | | | Make nServices atomicMatt Corallo2017-02-101-1/+1
| | | | | | | | | | | | |
| | * | | | | | | | | | | Make nStartingHeight atomicMatt Corallo2017-02-101-1/+1
| | | | | | | | | | | | |
| | * | | | | | | | | | | Access fRelayTxes with cs_filter lock in copyStatsMatt Corallo2017-02-101-1/+4
| | | | | | | | | | | | |
| | * | | | | | | | | | | Avoid copying CNodeStats to make helgrind OK with buggy std::stringMatt Corallo2017-02-101-3/+2
| | | | | | | | | | | | |
| | * | | | | | | | | | | Make nTimeConnected const in CNodeMatt Corallo2017-02-102-2/+2
| | | | | | | | | | | | |
| | * | | | | | | | | | | net: fix a few races. Credit @TheBlueMattCory Fields2017-02-103-15/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are (afaik) all long-standing races or concurrent accesses. Going forward, we can clean these up so that they're not all individual atomic accesses. - Reintroduce cs_vRecv to guard receive-specific vars - Lock vRecv/vSend for CNodeStats - Make some vars atomic. - Only set the connection time in CNode's constructor so that it doesn't change
| * | | | | | | | | | | | Merge #9707: Fix RPC failure testingMarcoFalke2017-02-102-4/+21
| |\ \ \ \ \ \ \ \ \ \ \ \ | | |/ / / / / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | 9db8eec Fix RPC failure testing (John Newbery)
| | * | | | | | | | | | | Fix RPC failure testingJohn Newbery2017-02-082-4/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure that RPC tests are actually checking failures correctly by: - Catching JSON RPC exceptions and verifying the error codes and messages. - Failing the test case if the JSON RPC exception isn't raised.
| * | | | | | | | | | | | Merge #9698: net: fix socket close raceWladimir J. van der Laan2017-02-102-26/+49
| |\ \ \ \ \ \ \ \ \ \ \ \ | | |_|/ / / / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9a0b784 net: add a lock around hSocket (Cory Fields) 45e2e08 net: rearrange so that socket accesses can be grouped together (Cory Fields)
| | * | | | | | | | | | | net: add a lock around hSocketCory Fields2017-02-062-15/+29
| | | | | | | | | | | | |
| | * | | | | | | | | | | net: rearrange so that socket accesses can be grouped togetherCory Fields2017-02-061-14/+23
| | | |/ / / / / / / / / | | |/| | | | | | | | |
| * | | | | | | | | | | Merge #9730: Remove bitseed.xf2.org form the dns seed listJonas Schnelli2017-02-101-1/+0
| |\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ca9955e Remove bitseed.xf2.org form the dns seed list (Jonas Schnelli)
| | * | | | | | | | | | | Remove bitseed.xf2.org form the dns seed listJonas Schnelli2017-02-091-1/+0
| |/ / / / / / / / / / /
| * | | | | | | | | | | Merge #9718: Qt/Intro: Various fixesWladimir J. van der Laan2017-02-091-3/+8
| |\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a9baa6d Bugfix: Qt/Intro: Pruned nodes never require *more* space (Luke Dashjr) 93ffba7 Bugfix: Qt/Intro: Chain state needs to be stored even with the full blockchain (Luke Dashjr) c8cee26 Qt/Intro: Update block chain size (Luke Dashjr)
| | * | | | | | | | | | | Bugfix: Qt/Intro: Pruned nodes never require *more* spaceLuke Dashjr2017-02-081-1/+4
| | | | | | | | | | | | |
| | * | | | | | | | | | | Bugfix: Qt/Intro: Chain state needs to be stored even with the full blockchainLuke Dashjr2017-02-081-2/+4
| | | | | | | | | | | | |
| | * | | | | | | | | | | Qt/Intro: Update block chain sizeLuke Dashjr2017-02-081-1/+1
| | | | | | | | | | | | |
| * | | | | | | | | | | | Merge #9674: Always enforce strict lock ordering (try or not)Wladimir J. van der Laan2017-02-082-48/+20
| |\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 618ee92 Further-enforce lockordering by enforcing directly after TRY_LOCKs (Matt Corallo) 2a962d4 Fixup style a bit by moving { to the same line as if statements (Matt Corallo) 8465631 Always enforce lock strict lock ordering (try or not) (Matt Corallo) fd13eca Lock cs_vSend and cs_inventory in a consistent order even in TRY (Matt Corallo)
| | * | | | | | | | | | | | Further-enforce lockordering by enforcing directly after TRY_LOCKsMatt Corallo2017-02-071-15/+13
| | | | | | | | | | | | | |
| | * | | | | | | | | | | | Fixup style a bit by moving { to the same line as if statementsMatt Corallo2017-02-041-6/+3
| | | | | | | | | | | | | |
| | * | | | | | | | | | | | Always enforce lock strict lock ordering (try or not)Matt Corallo2017-02-021-25/+1
| | | | | | | | | | | | | |
| | * | | | | | | | | | | | Lock cs_vSend and cs_inventory in a consistent order even in TRYMatt Corallo2017-02-021-5/+6
| | | |_|_|_|_|_|/ / / / / | | |/| | | | | | | | | |
| * | | | | | | | | | | | Merge #9705: build: Add options to override BDB cflags/libsWladimir J. van der Laan2017-02-083-60/+70
| |\ \ \ \ \ \ \ \ \ \ \ \ | | |_|_|_|_|_|/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5cc2ebb Update OpenBSD and FreeBSD build steps (Wladimir J. van der Laan) 8713de8 build: Add options to override BDB cflags/libs (Wladimir J. van der Laan)
| | * | | | | | | | | | | Update OpenBSD and FreeBSD build stepsWladimir J. van der Laan2017-02-072-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Re-try with most recent versions, and use BDB_CFLAGS/BDB_LIBS to directly point at BerkeleyDB instead of CPPFLAGS hacks.
| | * | | | | | | | | | | build: Add options to override BDB cflags/libsWladimir J. van der Laan2017-02-071-56/+64
| | | |_|/ / / / / / / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add environment settings to specify the CFLAGS and LIBS to be used for BerkeleyDB directly. These will completely by-pass autodetection in the same way as other similar flags. ``` BDB_CFLAGS C compiler flags for BerkeleyDB, bypasses autodetection BDB_LIBS Linker flags for BerkeleyDB, bypasses autodetection ``` Implements #3921.
| * | | | | | | | | | | Merge #9712: bench: Fix initialization order in registrationMarcoFalke2017-02-082-9/+10
| |\ \ \ \ \ \ \ \ \ \ \ | | |_|_|_|_|/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | 29c5328 bench: Fix initialization order in registration (Wladimir J. van der Laan)
| | * | | | | | | | | | bench: Fix initialization order in registrationWladimir J. van der Laan2017-02-072-9/+10
| |/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The initialization order of global data structures in different implementation units is undefined. Making use of this is essentially gambling on what the linker does, the so-called [Static initialization order fiasco](https://isocpp.org/wiki/faq/ctors#static-init-order). In this case it apparently worked on Linux but failed on OpenBSD and FreeBSD. To create it on first use, make the registration structure local to a function. Fixes #8910.