Commit graph

17064 commits

Author SHA1 Message Date
practicalswift
29ab96dbd2 Use unique_ptr for dbenv (DbEnv) 2017-11-09 16:53:34 +01:00
practicalswift
f72cbf9ba9 Use unique_ptr for pfilter (CBloomFilter) 2017-11-09 16:53:34 +01:00
practicalswift
8ccf1bb0c3 Use unique_ptr for sem{Addnode,Outbound} (CSemaphore) 2017-11-09 16:52:44 +01:00
practicalswift
73db0635a3 Use unique_ptr for upnp_thread (boost::thread) 2017-11-09 16:52:44 +01:00
practicalswift
0024531625 Use unique_ptr for dbw (CDBWrapper) 2017-11-09 16:52:44 +01:00
practicalswift
fa6d1228e9 Use unique_ptr:s for {fee,short,long}Stats (TxConfirmStats) 2017-11-09 16:52:44 +01:00
practicalswift
5a6f768896 Use unique_ptr for httpRPCTimerInterface (HTTPRPCTimerInterface) 2017-11-09 16:52:44 +01:00
practicalswift
860e912583 Use unique_ptr for pwalletMain (CWallet) 2017-11-09 16:52:44 +01:00
Matt Corallo
9e9e31aa10 Fix qt build broken by 5a5e4e9 2017-11-09 10:43:13 -05:00
Wladimir J. van der Laan
99ec12666b
Merge #11074: Assert that CWallet::SyncMetaData finds oldest transaction.
6c4042a Assert that CWallet::SyncMetaData finds oldest transaction. (Eelis)

Pull request description:

  Without this assert, the Clang static analyzer warns about subsequent dereferencing of copyFrom, because it can't be sure that it's not nullptr. See #9573.

Tree-SHA512: 83cbcb32c52c94fcfefbc90ec7de2011dacd6bdb0da35adc401b8d8dda6a86de2fa0403e2158592268c2cf15eef4f3d887d98c90f1031d4735d5f4bf9dbc1d23
2017-11-09 15:20:18 +01:00
Wladimir J. van der Laan
77ba4bf960
Merge #10368: [wallet] Remove helper conversion operator from wallet
5a5e4e9 [wallet] Remove CTransaction&() helper conversion operator from wallet implementation. (Karl-Johan Alm)

Pull request description:

  The `CTransaction&()` operator in `CMerkleTx` makes conversion into `CTransaction`s transparent, but was marked as to-be-removed in favor of explicitly getting the `tx` ivar, presumably as the operator can lead to ambiguous behavior and makes the code harder to follow.

  This PR removes the operator and adapts callers. This includes some cases of `static_cast<CTransaction>(wtx)` → `*wtx.tx`, which is definitely an improvement.

Tree-SHA512: 95856fec7194d6a79615ea1c322abfcd6bcedf6ffd0cfa89bbdd332ce13035fa52dd4b828d20df673072dde1be64b79c513529a6f422dd5f0961ce722a32d56a
2017-11-09 14:23:13 +01:00
Wladimir J. van der Laan
ef3758d1ef
Merge #10696: Remove redundant nullptr checks before deallocation
b109a1c Remove redundant nullptr checks before deallocation (practicalswift)

Pull request description:

  Rationale:
  * `delete ptr` is a no-op if `ptr` is `nullptr`

Tree-SHA512: c98ce769125c4912186a8403cc08a59cfba85b7141af645c709b4c4eb90dd9cbdd6ed8076d50099d1e4ec2bf75917d1af6844082ec42bbb4d94d229a710e051c
2017-11-09 13:38:48 +01:00
Wladimir J. van der Laan
0ecc6305f4
Merge #11594: Improve -disablewallet parameter interaction
7963335 Fix -disablewallet default value (João Barbosa)
b411c2a Improve -disablewallet parameter interaction (João Barbosa)

Pull request description:

  The first commit logs a message for each configured wallet if `-disablewallet` is set:
  ```
  bitcoind -printtoconsole -regtest -disablewallet -wallet=foo -wallet=bar
  ...
  WalletParameterInteraction: parameter interaction: -disablewallet -> ignoring -wallet=foo
  WalletParameterInteraction: parameter interaction: -disablewallet -> ignoring -wallet=bar
  ```
  It also moves up the `-disablewallet` check which avoids the unnecessary `-wallet` soft set.

  The second commit fixes the default value of `-disablewallet`, currently the value is correct, but it should use `DEFAULT_DISABLE_WALLET`.

  The third commit can be dropped or squashed, just took the opportunity to fix the coding style there.

Tree-SHA512: bec13d2b2be5adf4680c77212020ed27dd05f15c4c73542d2005d91108bf704e2df1707ed2bec696e584ecd40eff7a63e25201fd70400222aa5a8da6aed6afeb
2017-11-09 13:32:35 +01:00
Wladimir J. van der Laan
331352f99f
Merge #10529: Improve bitcoind systemd service file
16be7dd Improve bitcoind systemd service file (Florian Schmaus)

Pull request description:

  Add comment how further options can be added or existing ones
  modified. Use /run/${RuntimeDirectory} for PID file.

  Remove TimeoutStopSec, TimeoutStartSec, StartLimitInterval,
  StartLimitBurst directives as those should be set indivdually.

  Remove Group to user the bitcoin user's default group.

  Changed Restart from 'always' to 'on-failure' (can also be overwritten
  individually).

Tree-SHA512: f76674c11fd6e3faaf786aa05686926523d9c875aad6b776337f800108fdb716470286805c532b494f8cf713cb5eea6b735e1c7c238ffb407a5cc909dda41aa4
2017-11-09 13:17:05 +01:00
Wladimir J. van der Laan
0dec4cc300
Merge #11221: Refactor: simpler read
9db9d62 Refactor: make the read function simpler (gnuser)

Pull request description:

Tree-SHA512: 5a80cc1b841488323d421e6a40b245d149cab1988247aed6cc7468dcc042d3df15b6711f25e40ff16e03ac21de36adbaa1d8da61ccdb94f97c8b70c24a5eedc5
2017-11-09 13:16:03 +01:00
Wladimir J. van der Laan
b5f9f025fe
Merge #11552: Improve wallet-accounts test
bc9c0a7 Improve wallet-accounts test (Russell Yanofsky)

Pull request description:

  Add comments and

  - Verify sending to a account causes getaccountaddress to generate new addresses.
  - Verify sending to a account causes getreceivedbyaccount to return amount received.
  - Verify ways setaccount updates the accounts of existing addresses.

Tree-SHA512: 4facc8d10fb23847081e8081839d4050faa855cca40f34012b82297bf1a8cfdb975b26314bc518dc6b3f5997452a7acf309f9627e0dff359347c628b37014bfa
2017-11-09 13:13:01 +01:00
Sjors Provoost
12781db058
[Tests] check specific validation error in miner tests
BOOST_CHECK_THROW merely checks that some std::runtime_error is
thrown, but not which one.

One example of how this could lead to a test passing when a developer
introduces a consensus bug: the test for the sigops limit assumes
that CreateNewBlock fails with bad-blk-sigops. However it can
also fail with bad-txns-vout-negative, e.g. if a naive developer lowers
BLOCKSUBSIDY to 1*COIN in the test.

BOOST_CHECK_EXCEPTION allows an additional predicate function. This
commit uses this for all exceptions that are checked for in
miner_tets.cpp:
* bad-blk-sigops
* bad-cb-multiple
* bad-txns-inputs-missingorspent
* block-validation-failed

An instance of the CheckRejectInvalid class (for a given validation string)
is passed to BOOST_CHECK_EXCEPTION.
2017-11-09 12:02:46 +01:00
John Newbery
fb00c45c32 [tests] Explicitly disallow support for p2p versions below 60001
The mininode module includes code to support p2p versions below
60001. However, the test_framework does not support versions
of Bitcoin Core before V0.13.0. Remove code supporting
p2p versions before 60001 (which has never been run).
2017-11-08 15:43:45 -05:00
John Newbery
3858aabbd0 [tests] Remove support for p2p alert messages
Alert messages were removed in p2p version 70013 (Bitcoin Core V0.13.0)
2017-11-08 15:43:24 -05:00
John Newbery
c0b1274705 [tests] Remove support for bre-BIP31 ping messages
BIP31 support was added to Bitcoin Core in version 0.6.1. Our test
framework is incompatible with Bitcoin Core versions that old, so remove
all special logic for handling pre-BIP31 pings.
2017-11-08 15:30:44 -05:00
John Newbery
2904e301c5 [tests] Remove dead code from mininode.py
Removes the dead deliver_sleep_time and EarlyDisconnectError code
2017-11-08 15:29:27 -05:00
MarcoFalke
f7388e93d3
Merge #11182: [tests] Add P2P interface to TestNode
32ae82f5c [tests] use TestNode p2p connection in tests (John Newbery)
5e5725cc2 [tests] Add p2p connection to TestNode (John Newbery)
b86c1cd20 [tests] fix TestNode.__getattr__() method (John Newbery)

Pull request description:

  Final two steps of #10082 : Adding the "mininode" P2P interface to `TestNode`

  This PR adds the mininode P2P interface to `TestNode`. It simplifies the process for opening a P2P connection to the node-under-test from this:

  ```python
  node0 = NodeConnCB()
  connections = []
  connections.append(NodeConn('127.0.0.1', p2p_port(0), self.nodes[0], node0))
  node0.add_connection(connections[0])
  ```

  to this:

  ```python
  self.nodes[0].add_p2p_connection(p2p_conn_type=NodeConnCB)
  ```

  The first commit adds the infrastructure to `test_node.py`. The second updates the individual test cases to use it. Can be separated if this is too much review for one PR.

Tree-SHA512: 44f1a6320f44eefc70489ae8350c6a16ad1a6035e4b9b7bafbdf19f5905ed0e2db85beaaf4758eec3059dd89a375a47a45352a029f39f57a86ab38a9ae66650e
2017-11-08 13:11:07 -05:00
MarcoFalke
0a2f46b015
Merge #11635: trivial: Fix typo – alreardy → already
7536b08c1 trivial: Fix typo – alreardy → already (practicalswift)

Pull request description:

  Fix typo: alreardy → already.

Tree-SHA512: b53f7540e516bb0a106873983aea8cb35f8e6690153b2c737ede79be7dae7b9e5f644859204ab6419de0f900ffac50bfdd775259b24ad8c12993b4c792fe836b
2017-11-08 13:03:13 -05:00
John Newbery
32ae82f5c3 [tests] use TestNode p2p connection in tests 2017-11-08 09:32:04 -05:00
John Newbery
5e5725cc2b [tests] Add p2p connection to TestNode
p2p connections can now be added to TestNode instances.

This commit also updates the example test to use the new
p2p interface in TestNode to demonstrate usage.

A future commit will update the existing tests to use p2p through the
TestNode.
2017-11-08 09:04:02 -05:00
John Newbery
b86c1cd208 [tests] fix TestNode.__getattr__() method 2017-11-08 09:04:02 -05:00
practicalswift
7536b08c10 trivial: Fix typo – alreardy → already 2017-11-08 11:36:18 +01:00
Wladimir J. van der Laan
77546a3182
Merge #11289: Add wallet backup text to import* and add* RPCs
c098c58 Wrap dumpwallet warning and note scripts aren't dumped (MeshCollider)
a38bfbc Add wallet backup text to import*, add* and dumpwallet RPCs (MeshCollider)

Pull request description:

  Closes https://github.com/bitcoin/bitcoin/issues/11243

  Adds "Requires a new wallet backup" text to `addwitnessaddress`, `importprivkey`, `importmulti`, `importaddress`, `importpubkey`, and `addmultisigaddress`. Also adds a warning to `dumpwallet` that backing up the seed alone is not sufficient to back up non-HD addresses

Tree-SHA512: 76d7cdca54d5b458acf479154620322391b889922525fddd6153f4164cfee393ad743757400cb8f6b1b30f24947df68ea9043b4e509f7df77a8fa05dda370933
2017-11-08 10:29:11 +01:00
Wladimir J. van der Laan
5ef3b6967b
Merge #11524: [net] De-duplicate connection eviction logic
5ce7cb9 [net] De-duplicate connection eviction logic (Thomas Snider)

Pull request description:

  While reviewing the safeguards against deliberate node isolation on the network by malicious actors, I found a good de-duplication candidate.

  I think this form is much more legible (the type of `cutoffs` notwithstanding).  ReverseCompareNodeTimeConnected is not included in the list since the cutoff size is a function of the remaining number of nodes in the candidate eviction set.

Tree-SHA512: ed17999fa9250dcf8448329219324477117e4ecd2d41dedd72ad253e44630eef50b3232c420f1862ebbfb9b8c94efbba1a235b519e39ff5946865c7d69a75280
2017-11-08 08:46:50 +01:00
Wladimir J. van der Laan
5776582b7f
Merge #11562: bench: use std::chrono rather than gettimeofday
24a0bdd bench: prefer a steady clock if the resolution is no worse (Cory Fields)
c515d26 bench: switch to std::chrono for time measurements (Cory Fields)

Pull request description:

  gettimeofday has portability issues, see for example #11558.

  Regardless of large-scale clock refactors in the future, I think it's fine for bench to just use std::chrono itself.

  Note that this may slightly improve bench accuracy and changes the display from tiny floats to nanosecond counts instead.

Tree-SHA512: 122355456d01ec6cfcf6867991715cf3a95eabbf5a4f2adc26a059b50382ffb318b7639cdd575197fc4ee5be8b967c0404f1f920d6f5bd4ddd0bd63b5e5c5632
2017-11-08 08:33:07 +01:00
Thomas Snider
5ce7cb9518 [net] De-duplicate connection eviction logic 2017-11-07 15:33:15 -08:00
Cory Fields
24a0bddf4a bench: prefer a steady clock if the resolution is no worse 2017-11-07 17:17:34 -05:00
Cory Fields
c515d266ec bench: switch to std::chrono for time measurements
std::chrono removes portability issues.

Rather than storing doubles, store the untouched time_points. Then
convert to nanoseconds for display. This allows for maximum precision, while
keeping results comparable between differing hardware/operating systems.

Also, display full nanosecond counts rather than sub-second floats.
2017-11-07 17:15:58 -05:00
MarcoFalke
dd561667cb
Merge #11389: Support having SegWit always active in regtest (sipa, ajtowns, jnewbery)
d61845818 Have SegWit active by default (Pieter Wuille)
4bd89210a Unit tests for always-active versionbits. (Anthony Towns)
d07ee77ab Always-active versionbits support (Pieter Wuille)
18e071841 [consensus] Pin P2SH activation to block 173805 on mainnet (John Newbery)
526023aa7 Improve handling of BIP9Deployment limits (Anthony Towns)

Pull request description:

  Most tests shouldn't have to deal with the now-historical SegWit activation transition (and other deployments, but SegWit is certainly the hardest one to accomodate).

  This PR makes a versionbits starttime of -1 equal to "always active", and enables it by default for SegWit on regtest. Individual tests can override this by using the existing `-vbparams` option.

  A few unit tests and functional tests are adapted to indeed override vbparams, as they specifically test the transition.

  This is in preparation for wallet SegWit support, but I thought having earlier eyes on it would be useful.

Tree-SHA512: 3f07a7b41cf46476e6c7a5c43244e68c9f41d223482cedaa4c02a3a7b7cd0e90cbd06b84a1f3704620559636a2268f5767d4c52d09c1b354945737046f618fe5
2017-11-07 17:05:46 -05:00
MarcoFalke
6f01dcf638
Merge #11597: [trivial] Fix error messages in CFeeBumper
a02c5e459 [trivial] Fix error messages in CFeeBumper (Karl-Johan Alm)

Pull request description:

  …pool fee rate.

Tree-SHA512: c179853b2a19fdb767e46b29068f3e1ce6db75fda4356746472c93c5b51f0aa495a988c4da1e14762993d57229e525594a2e9d0e089f931c1c67fec7807bda54
2017-11-07 15:12:45 -05:00
João Barbosa
7963335d25 Fix -disablewallet default value 2017-11-07 19:13:38 +00:00
João Barbosa
b411c2a12a Improve -disablewallet parameter interaction 2017-11-07 19:13:38 +00:00
Pieter Wuille
ef8a634358
Merge #10866: Fix -Wthread-safety-analysis warnings. Compile with -Wthread-safety-analysis if available.
76ea17c79 Add mutex requirement for AddToCompactExtraTransactions(…) (practicalswift)
4616c825a Use -Wthread-safety-analysis if available (+ -Werror=thread-safety-analysis if --enable-werror) (practicalswift)
7e319d639 Fix -Wthread-safety-analysis warnings. Change the sync.h primitives to std from boost. (Matt Corallo)

Pull request description:

  * Add mutex requirement for `AddToCompactExtraTransactions(…)`.
  * Use `-Wthread-safety-analysis` if available.
  * Rebased on top of https://github.com/TheBlueMatt/bitcoin/commits/2017-08-test-10923 - now includes: Fix -Wthread-safety-analysis warnings. Change the sync.h primitives to std from boost.

Tree-SHA512: fb7365f85daa2741c276a1c899228181a8d46af51db7fbbdffceeaff121a3eb2ab74d7c8bf5e7de879bcc5042d00d24cb4649c312d51caba45a3f6135fd8b38f
2017-11-07 10:36:58 -08:00
MarcoFalke
70fec9e36b
Merge #11620: [build] .gitignore: add background.tiff
4a110a009 [build] .gitignore: add background.tiff (Sjors Provoost)

Pull request description:

  On OSX, running `make deploy` results in three files that were not covered by `.gitignore`:

  	background.tiff
  	background.tiff.png
  	background.tiff@2x.png

Tree-SHA512: cee7a6ebbc50f28bf588121902f6026ec08cf6516d9e56734dfc1b2d3f238e2db5bf87411f6a74b8bd06569f792789ac9f9046e6183f63fd675b953f24b060fc
2017-11-07 13:18:39 -05:00
MarcoFalke
f9b74ef3fc
Merge #11624: Docs: Change formatting for sequence of steps
d0b1fc88d Docs: Change formatting for sequence of steps (Vivek Ganesan)

Pull request description:

  A numbered list is used when the sequence of steps matters. A bulleted list is used to denote a set of items where the sequence does not matter.

  The workflow is a sequence and hence changed to a numbered list.

  Reference: https://www.w3.org/wiki/HTML_lists#Ordered_lists

Tree-SHA512: 310532713ed2dc3a5fe6d3b54f77fef09f355fa0ead57f2861c469e9149c658af4767cf00fb3e13569f6c4700edb0cc0265c2654c59393df80a99bf5123de5f5
2017-11-07 12:12:01 -05:00
Vivek Ganesan
d0b1fc88d8 Docs: Change formatting for sequence of steps
A numbered list is used when the sequence of steps matters. A bulleted list is used to denote a set of items where the sequence does not matter.

The workflow is a sequence and hence changed to a numbered list.
2017-11-07 22:33:58 +05:30
MarcoFalke
998c3046fa
Merge #11626: rpc: Make logging RPC public
cabff7588 rpc: Make logging RPC public (Wladimir J. van der Laan)

Pull request description:

  This started out as a developer hack but now it's useful enough for general use. Unhide the call by moving it to `control` category. This makes it documented in `help`.

Tree-SHA512: f45fa378558b552d4e2a110bf85100b0eaaa6180bb5f62cb54a251f66026d4625b670c69d85c281eebbf4b56b80b65618c51a5a593b8f9d0a04b31e95adc91f4
2017-11-07 11:25:37 -05:00
MarcoFalke
89cc4f905e
Merge #11554: Sanity-check script sizes in bitcoin-tx
a6f33ea77 Sanity-check script sizes in bitcoin-tx (Matt Corallo)

Pull request description:

Tree-SHA512: bb8ecb628763af23816ab085758f6140920a6ff05dcb298129c2bbe584a02a759c700a05740eca77023292c98a5658b2a608fa27d5a948d183f87ed9ab827952
2017-11-07 11:19:52 -05:00
MarcoFalke
87d90efd69
Merge #11618: rpc: Lock cs_main in blockToJSON/blockheaderToJSON
a9b6ba0b7 Add missing cs_main locks when calling blockToJSON/blockheaderToJSON (practicalswift)

Pull request description:

  `blockToJSON(...)` and `blockheaderToJSON(...)` read the variable `chainActive` which requires holding the mutex `cs_main`. So does `GetDifficulty(...)`.

Tree-SHA512: bfb94f5e3238accbf6a4daddde49d53f1891c38ae9b07e25b3098c485747159258f64bb66a50e147b32beac601de89d9d04ff717b6c4f1460d329c90a53d3333
2017-11-07 10:40:59 -05:00
MarcoFalke
5aeaa9ccd1
Merge #11585: addrman: Add missing lock in Clear() (CAddrMan)
3ab545d7f addrman: Add missing lock in Clear() (CAddrMan) (practicalswift)

Pull request description:

  Add missing lock in `Clear()` (`CAddrMan`).

  The variable `vRandom` is guarded by the mutex `cs`.

  **Note to reviewers:** Does this look correct? Should the lock cover the entire scope of the method, or should it be limited to cover only `std::vector<int>().swap(vRandom);`?

Tree-SHA512: 8833f31beaed1728fa55b13ddf9e0b8e24e395931497329be2440ce1c5113ff02871707d40830260adabd30c4ea86088f5da5cf8a821150c0d820f50a2ce386a
2017-11-07 10:35:12 -05:00
Wladimir J. van der Laan
ffc0b11503
Merge #11480: [ui] Add toggle for unblinding password fields
ff35de8 [ui] Add toggle for unblinding password fields (Thomas Snider)

Pull request description:

  Proposed change for adding the ability to toggle password visibility in the password dialog.  This is similar to functionality in most password managers and is specifically added with the use case of password managers in mind - the password in that case is likely pasted twice into both the new password and confirm password fields.

  If this is a welcome change, I am open to suggestions on rearranging the layout.

Tree-SHA512: 1823f356f8f941cc584c44de264433e9a573cb8a358efa300a412c4458b5564d8d193969be40859195cf9c8d6768eee895ee22440d51db4f09175f9b4e28bced
2017-11-07 08:26:45 +01:00
Wladimir J. van der Laan
cabff75880 rpc: Make logging RPC public
This started out as a developer hack but now it's useful
enough for general use. Unhide the call by moving it to `control` category.
This makes it documented in `help`.
2017-11-07 07:50:49 +01:00
practicalswift
a9b6ba0b7c Add missing cs_main locks when calling blockToJSON/blockheaderToJSON 2017-11-07 07:17:47 +01:00
Pieter Wuille
d618458184 Have SegWit active by default 2017-11-06 19:29:20 -08:00
Anthony Towns
4bd89210a1 Unit tests for always-active versionbits. 2017-11-06 19:23:40 -08:00