Commit graph

10999 commits

Author SHA1 Message Date
Kaz Wesley
57704499be CBase58Data::SetString: cleanse the full vector
SetString seems to be passing the length of the wrong variable to
memory_cleanse, resulting in the last byte of the temporary buffer not being
securely erased.
2016-04-21 18:28:57 -07:00
Patrick Strateman
d1d7775587 Improve worst-case behavior of CScript::FindAndDelete
Thanks to Sergio Lerner for identifying this issue and suggesting this kind of solution.
2016-04-21 17:24:36 -07:00
Cory Fields
06fdffd222 travis: switch to Trusty 2016-04-21 13:40:51 -04:00
Wladimir J. van der Laan
a6666b25c7 depends: mac deploy Py3 compatibility
This fixes the gitian MacOSX build, it was broken in #7723.

The patch to `native_mac_alias` should probably make it upstream.
2016-04-21 13:40:51 -04:00
MarcoFalke
59ad56851a
Merge #7912: Tests: Fix deserialization of reject messages
807fa47 Tests: Fix deserialization of reject messages (Suhas Daftuar)
2016-04-21 17:23:25 +02:00
Wladimir J. van der Laan
78d61aab23
Merge #7921: [contrib] verify-commits: Add MarcoFalke fingerprint
fa24329 [contrib] verify-commits: Add MarcoFalke fingerprint (MarcoFalke)
2016-04-21 16:34:23 +02:00
MarcoFalke
fa24329334 [contrib] verify-commits: Add MarcoFalke fingerprint 2016-04-21 15:25:09 +02:00
Wladimir J. van der Laan
3689ac4634
Merge #7916: Explicitly pass CChainParams& to DisconnectTip()
176869f Explicitly pass CChainParams to ConnectBlock (face)
d0a6353 Pass CChainParams to DisconnectTip() (face)
764d237 Globals: Explicitly pass const CChainParams& to UpdateTip() (Jorge Timón)
2016-04-21 14:54:31 +02:00
Pieter Wuille
bafd075c5e
Merge #7913: Fix for incorrect locking in GetPubKey() (keystore.cpp)
220f950 Fix for incorrect locking in GetPubKey() (keystore.cpp) (Yuri Zhykin)
2016-04-21 13:57:07 +02:00
Pieter Wuille
7daa3adb24
Merge #7868: net: Split DNS resolving functionality out of net structures
d39f5b4 net: disable resolving from storage structures (Cory Fields)
3675699 net: resolve outside of storage structures (Cory Fields)
a98cd1f net: manually resolve dns seed sources (Cory Fields)
e9fc71e net: require lookup functions to specify all arguments (Cory Fields)
2016-04-21 13:48:13 +02:00
Gregory Maxwell
b559914753 Move bloom and feerate filtering to just prior to tx sending.
This will avoid sending more pointless INVs around updates, and
 prevents using filter updates to timetag transactions.

Also adds locking for fRelayTxes.
2016-04-21 00:33:56 +02:00
Pieter Wuille
4578215e7f Return mempool queries in dependency order 2016-04-21 00:33:56 +02:00
Pieter Wuille
ed7068302c 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.
2016-04-21 00:33:56 +02:00
Pieter Wuille
dc13dcd2be Split up and optimize transaction and block inv queues 2016-04-21 00:33:51 +02:00
Suhas Daftuar
3a99fb2cb1 Fix headers announcements edge case
Previously we would assert that if every block in vBlockHashesToAnnounce is in
chainActive, then the blocks to be announced must connect.  However, there are
edge cases where this assumption could be violated (eg using invalidateblock /
reconsiderblock), so just check for this case and revert to inv-announcement
instead.
2016-04-20 14:19:03 -04:00
Cory Fields
d39f5b425d net: disable resolving from storage structures
CNetAddr/CService/CSubnet can no longer resolve DNS.
2016-04-20 13:08:19 -04:00
Cory Fields
367569926a net: resolve outside of storage structures
Rather than allowing CNetAddr/CService/CSubNet to launch DNS queries, require
that addresses are already resolved.

This greatly simplifies async resolve logic, and makes it harder to
accidentally leak DNS queries.
2016-04-20 13:08:19 -04:00
Cory Fields
a98cd1fc86 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.
2016-04-20 13:07:19 -04:00
face
176869f9b3 Explicitly pass CChainParams to ConnectBlock 2016-04-20 17:05:15 +03:00
Suhas Daftuar
807fa47a1e Tests: Fix deserialization of reject messages
Assume that reject messages for blocks or transactions due to reason
REJECT_MALFORMED will not include the hash of the block or tx being rejected.
2016-04-20 09:27:26 -04:00
Yuri Zhykin
220f950ab1 Fix for incorrect locking in GetPubKey() (keystore.cpp) 2016-04-20 16:04:28 +03:00
Gregory Maxwell
f2d3ba7386 Eliminate TX trickle bypass, sort TX invs for privacy and priority.
Previously Bitcoin would send 1/4 of transactions out to all peers
 instantly.  This causes high overhead because it makes >80% of
 INVs size 1.  Doing so harms privacy, because it limits the
 amount of source obscurity a transaction can receive.

These randomized broadcasts also disobeyed transaction dependencies
 and required use of the orphan pool.  Because the orphan pool is
 so small this leads to poor propagation for dependent transactions.

When the bypass wasn't in effect, transactions were sent in the
 order they were received.  This avoided creating orphans but
 undermines privacy fairly significantly.

This commit:
 Eliminates the bypass. The bypass is replaced by halving the
  average delay for outbound peers.

 Sorts candidate transactions for INV by their topological
  depth then by their feerate (then hash); removing the
  information leakage and providing priority service to
  higher fee transactions.

 Limits the amount of transactions sent in a single INV to
  7tx/sec (and twice that for outbound); this limits the
  harm of low fee transaction floods, gives faster relay
  service to higher fee transactions. The 7 sounds lower
  than it really is because received advertisements need
  not be sent, and because the aggregate rate is multipled
  by the number of peers.
2016-04-20 10:26:37 +02:00
Gavin Andresen
e2a30bc9a9 Unit test for CScript::FindAndDelete 2016-04-19 13:22:45 -07:00
Patrick Strateman
c0f660c3a3 Replace c-style cast with c++ style static_cast. 2016-04-19 13:22:20 -07:00
Patrick Strateman
ec9ad5f199 Replace memcmp with std::equal in CScript::FindAndDelete
Function is stl; std::equal just makes more sense.
2016-04-19 13:22:03 -07:00
Cory Fields
a4625acbf8 leveldb: integrate leveldb into our buildsystem
leveldb's buildsystem causes us a few problems:
- breaks out-of-tree builds
- forces flags used for some tools
- limits cross builds

Rather than continuing to add wrappers around it, simply integrate it into our
build.
2016-04-19 14:37:15 -04:00
face
d0a6353dec Pass CChainParams to DisconnectTip() 2016-04-19 20:33:04 +03:00
Jorge Timón
764d237772 Globals: Explicitly pass const CChainParams& to UpdateTip() 2016-04-19 20:33:04 +03:00
Wladimir J. van der Laan
04a2937357
Merge #7787: [Moveonly] Create ui_interface.cpp
fa10ce6 Move ui_interface.cpp to libbitcoin_server_a_SOURCES (MarcoFalke)
fabbf80 [ui] Move InitError, InitWarning, AmountErrMsg (MarcoFalke)
2016-04-19 16:10:57 +02:00
MarcoFalke
fa10ce6a6d Move ui_interface.cpp to libbitcoin_server_a_SOURCES
It is only needed by bitcoind and bitcoin-qt
2016-04-19 16:07:46 +02:00
Wladimir J. van der Laan
a1eb344ba8
Merge #7762: [ZMQ] append a message sequence number to every ZMQ notification
0b25a9f [ZMQ] append a message sequence number to every ZMQ notification (Jonas Schnelli)
de821d5 [ZMQ] refactor message string (Jonas Schnelli)
2016-04-19 15:44:38 +02:00
Jonas Schnelli
0b25a9fb42
[ZMQ] append a message sequence number to every ZMQ notification 2016-04-19 15:32:11 +02:00
Wladimir J. van der Laan
0e6fd5e4af
Merge #7822: Add listunspent() test for spendable/unspendable UTXO
5d217de Add test to check spendable and unspendable UTXO on RPC listunspent (Joao Fonseca)
fa942c7 Move method to check matches within arrays on util.py (Joao Fonseca)
2016-04-19 14:58:23 +02:00
Joao Fonseca
5d217decc1 Add test to check spendable and unspendable UTXO on RPC listunspent 2016-04-19 12:29:27 +01:00
Joao Fonseca
fa942c755a Move method to check matches within arrays on util.py 2016-04-19 12:29:19 +01:00
Wladimir J. van der Laan
187186b0fe
Merge #7905: test: move accounting_tests and rpc_wallet_tests to wallet/test
b30fb42 test: Rename wallet.dat to wallet_test.dat (Wladimir J. van der Laan)
a25a4f5 wallet_ismine.h → script/ismine.h (Wladimir J. van der Laan)
f4eae2d test: Create test fixture for wallet (Wladimir J. van der Laan)
de39c95 test: move accounting_tests and rpc_wallet_tests to wallet/test (Wladimir J. van der Laan)
2016-04-19 10:49:48 +02:00
Wladimir J. van der Laan
4205ad7ca2
Merge #7827: Speed up getchaintips.
87049e8 Speed up getchaintips. (mrbandrews)
2016-04-19 10:44:47 +02:00
Wladimir J. van der Laan
fa9d86f8c4
Merge #7851: [qa] pull-tester: Don't mute zmq ImportError
fae1f4e [qa] rpc-tests: Fix link in comment and label error msg (MarcoFalke)
faa4f22 [qa] pull-tester: Exit early when no tests are run (MarcoFalke)
fa05e22 [qa] pull-tester: Don't mute zmq ImportError (MarcoFalke)
2016-04-19 10:26:11 +02:00
Wladimir J. van der Laan
fc9e3346e6
Merge #7904: txdb: Fix assert crash in new UTXO set cursor
a3310b4 txdb: Fix assert crash in new UTXO set cursor (Wladimir J. van der Laan)
2016-04-19 10:23:38 +02:00
mrbandrews
87049e832d Speed up getchaintips. 2016-04-18 12:10:47 -04:00
Wladimir J. van der Laan
b30fb42e49 test: Rename wallet.dat to wallet_test.dat
Indicate that the file name is not hardcoded, and a little bit of safety
so that it never nukes the main wallet.

Suggestion by Marco Falke.
2016-04-18 15:17:08 +02:00
Wladimir J. van der Laan
a25a4f5b04 wallet_ismine.h → script/ismine.h
Removes conditional dependency of `src/test` on wallet.

Makes multisig and P2SH tests complete without wallet built-in.
2016-04-18 15:14:36 +02:00
Wladimir J. van der Laan
f4eae2d910 test: Create test fixture for wallet
Removes all the `#ifdef ENABLE_WALLET` from `test_bitcoin` by
making the wallet tests use their own fixture.
2016-04-18 14:57:42 +02:00
MarcoFalke
fae1f4ebfe [qa] rpc-tests: Fix link in comment and label error msg 2016-04-18 14:52:28 +02:00
Wladimir J. van der Laan
d289950180
Merge #7900: fix spelling mistake
3107c47 fix spelling mistake (Chris Moore)
2016-04-18 14:15:12 +02:00
Wladimir J. van der Laan
9eb7565cdd
Merge #7897: add missing newline
dc0693f add missing newline (Chris Moore)
2016-04-18 14:14:30 +02:00
Wladimir J. van der Laan
de39c95c24 test: move accounting_tests and rpc_wallet_tests to wallet/test
Move the two other wallet tests to where they belong.
2016-04-18 14:04:40 +02:00
Wladimir J. van der Laan
88616d2008
Merge #7848: Divergence between 32- and 64-bit when hashing >4GB affects gettxoutsetinfo
28b400f doc: update release-notes for `gettxoutsetinfo` change (Wladimir J. van der Laan)
76212bb rpc: make sure `gettxoutsetinfo` hash has txids (Wladimir J. van der Laan)
9ad1a51 crypto: bytes counts are 64 bit (Wladimir J. van der Laan)
2016-04-18 12:48:09 +02:00
Wladimir J. van der Laan
b1bf511af6
Merge #7833: tests: Check Content-Type header returned from RPC server
5078ca4 tests: Check Content-Type header returned from RPC server (Wladimir J. van der Laan)
2016-04-18 12:45:04 +02:00
Wladimir J. van der Laan
ec870e1399
Merge #7888: prevector: fix 2 bugs in currently unreached code paths
a7af72a prevector::swap: fix (unreached) data corruption (Kaz Wesley)
4ed41a2 test prevector::swap (Kaz Wesley)
1e2c29f prevector: destroy elements only via erase() (Kaz Wesley)
2016-04-18 12:42:14 +02:00