Commit Graph

5208 Commits

Author SHA1 Message Date
Tom Harding
0fd8464458 Fix getbalance *
Chance "getbalance *" not to use IsTrusted.  The method and result
now match the "getbalance <specific-account>" behavior. In
particular, "getbalance * 0" now works.

Also fixed a comment -- GetGalance has required 1 confirmation
for many years, and the default "getbalance *" behavior matches
that.

Github-Pull: #6276
Rebased-From: 7d6a85ab5b
Rebased-By: @trasher-
2015-06-15 10:13:13 +02:00
Wladimir J. van der Laan
181771b712 json: fail read_string if string contains trailing garbage
Change `read_string` to fail when not the entire input has been
consumed. This avoids unexpected, even dangerous behavior (fixes #6223).

The new JSON parser adapted in #6121 also solves this problem so in
master this is a temporary fix, but should be backported to older releases.

Also adds tests for the new behavior.

Github-Pull: #6226
Rebased-From: 4e157fc60d
2015-06-03 15:16:18 +02:00
Luke Dashjr
ecc96f5ba9 Remove P2SH coinbase flag, no longer interesting
Github-Pull: #6203
Rebased-From: d449772cf6
2015-06-02 09:14:13 +02:00
Wladimir J. van der Laan
ebd7d8d78c Parameter interaction: disable upnp if -proxy set
To protect privacy, do not use UPNP when a proxy is set. The user may
still specify -listen=1 to listen locally (for a hidden service), so
don't rely on this happening through -listen.

Fixes #2927.

Conflicts:
	src/init.cpp

Rebased-From: 8c35b6f3be
Github-Pull: #6153
2015-05-27 09:35:40 +02:00
Wladimir J. van der Laan
ae3d8f371a Fix two problems in CSubNet parsing
Fix two CSubNet constructor problems:

- The use of `/x` where 8 does not divide x was broken, due to a
  bit-order issue

- The use of e.g. `1.2.3.4/24` where the netmasked bits in the network
  are not 0 was broken. Fix this by explicitly normalizing the netwok
  according to the bitmask.

Also add tests for these cases.

Fixes #6179. Thanks to @jonasschnelli for reporting and initial fix.

Rebased-From: b45c50ce51
Github-Pull: #6186
2015-05-27 09:11:27 +02:00
Wladimir J. van der Laan
e4a7d51537 Simplify code for CSubnet
Simplify the code by using CAddress.ip directly, instead of the reversed
GetByte() semantics.

Rebased-From: 19e8d7be42
Github-Pull: #6186
2015-05-27 09:10:56 +02:00
Gregory Maxwell
da656068ec Avoid crash on start in TestBlockValidity with gen=1.
When the internal miner is enabled at the start of a new node, there
 is an near instant assert in TestBlockValidity because its attempting
 to mine a block before the top checkpoint.

Also avoids a data race around vNodes.

Github-Pull: #6123
Rebased-From: bba7c24929
2015-05-12 16:38:04 +02:00
Wladimir J. van der Laan
49e4d14f75 Translations update 2015-05-12 16:33:04 +02:00
Wladimir J. van der Laan
d7e7727658 Preparations for 0.10.2 release 2015-05-12 16:23:53 +02:00
Jonas Schnelli
424ae6629b don't imbue boost::filesystem::path with locale "C" on windows
fixes https://github.com/bitcoin/bitcoin/issues/6078

Github-Pull: #6093
Rebased-From: b3ffcdf916 3da7849007
2015-05-10 14:26:22 +02:00
Cory Fields
824c011d16 wallet: fix boost::get usage with boost 1.58
Backport from master
2015-05-06 16:52:46 -04:00
Wladimir J. van der Laan
ebc0e41ede qt: translation update for next 0.10 point release 2015-05-04 13:12:30 +02:00
Gregory Maxwell
139cd8177b Cap nAttempts penalty at 8 and switch to pow instead of a division loop.
On hosts that had spent some time with a failed internet connection their
 nAttempts penalty was going through the roof (e.g. thousands for all peers)
 and as a result the connect search was pegging the CPU and failing to get
 more than a 4 connections after days of running (because it was taking so
 long per try).

Rebased-From: a784f90c98
Github-Pull: #6029
2015-04-20 13:59:19 +02:00
Suhas Daftuar
bac6fca3c9 Set nSequenceId when a block is fully linked
Also adds a test to CheckBlockIndex

Conflicts:
	src/main.cpp

Rebased-From: c1ecee8f72
Github-Pull: #6010
2015-04-20 13:48:52 +02:00
dexX7
323de27f4b Initialization: setup environment before starting QT tests
The environment is prepared by the main thread to guard against invalid locale settings.
2015-04-18 16:06:22 +02:00
dexX7
7494e0915b Initialization: setup environment before starting tests
The environment is prepared by the main thread to guard against invalid locale settings and to prevent deinitialization issues of Boost path, which can result in app crashes.
2015-04-18 16:06:20 +02:00
dexX7
df45564cf0 Initialization: set fallback locale as environment variable
The scope of `std::locale::global` appears to be smaller than `setenv("LC_ALL", ...)` and insufficient to fix messed up locale settings for the whole application.
2015-04-18 16:06:15 +02:00
mrbandrews
57d1f46952 Fix CheckBlockIndex for reindex.
Some tests in CheckBlockIndex require chainActive.Tip(), but when reindexing, chainActive has not been set on the first call to CheckBlockIndex.

reindex.py starts a node, mines 3 blocks, stops, and reindexes with CheckBlockIndex enabled.

Rebased-From: 0421c18f3a
Github-Pull: #6012
2015-04-16 10:34:30 +02:00
Matt Corallo
eae305f4c4 Fix missing lock in submitblock
Rebased-From: eb63bf86cf
Github-Pull: #6007
2015-04-14 10:52:03 +02:00
Gavin Andresen
1c62e84099 Keep mempool consistent during block-reorgs
This fixes a subtle bug involving block re-orgs and non-standard transactions.

Start with a block containing a non-standard transaction, and
one or more transactions spending it in the memory pool.

Then re-org away from that block to another chain that does
not contain the non-standard transaction.

Result before this fix: the dependent transactions get stuck
in the mempool without their parent, putting the mempool
in an inconsistent state.

Tested with a new unit test (adapted for 0.10).

Rebased-From: ad9e86dca1
Github-Pull: #5945
2015-04-06 11:38:43 +02:00
Wladimir J. van der Laan
2b7636c3d6 Merge pull request #5953
a1f425b Add a consistency check for the block chain data structures (Pieter Wuille)

This is a port of #5900 to 0.10.

Github-Pull: #5900
2015-04-01 17:26:33 +02:00
Pieter Wuille
aa587d4cae Scale up addrman
This change was suggested as Countermeasure 6 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.

Rebased-From: 1d21ba2f5e
Github-Pull: #5941
2015-04-01 16:39:55 +02:00
Pieter Wuille
0c6f334c32 Always use a 50% chance to choose between tried and new entries
This change was suggested as Countermeasure 2 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.

Rebased-From: c6a63ceeb4
Github-Pull: #5941
2015-04-01 16:39:36 +02:00
Pieter Wuille
214154e6fc Do not bias outgoing connections towards fresh addresses
This change was suggested as Countermeasure 2 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.

Rebased-From: 68ba3f67bd500a64fb8932c6b41924ddc31d76f
Github-Pull: #5941
2015-04-01 16:39:30 +02:00
Pieter Wuille
2218d4bbe0 Simplify hashing code
Conflicts:
	src/addrman.cpp

Rebased-From: a8ff7c62ed
Github-Pull: #5941
2015-04-01 16:38:54 +02:00
Pieter Wuille
cf0218f8b2 Make addrman's bucket placement deterministic.
Give each address a single fixed location in the new and tried tables,
which become simple fixed-size arrays instead of sets and vectors.

This prevents attackers from having an advantages by inserting an
address multiple times.

This change was suggested as Countermeasure 1 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.

It is also more efficient.

Conflicts:
	src/addrman.cpp
	src/addrman.h

Rebased-From: e6b343d880
Github-Pull: #5941
2015-04-01 16:38:47 +02:00
Pieter Wuille
b788994256 Switch addrman key from vector to uint256
Conflicts:
	src/addrman.cpp

Rebased-From: b23add5521
Github-Pull: #5941
2015-04-01 16:38:31 +02:00
Pieter Wuille
a1f425b48b Add a consistency check for the block chain data structures
This adds a -checkblockindex (defaulting to true for regtest), which occasionally
does a full consistency check for mapBlockIndex, setBlockIndexCandidates, chainActive, and
mapBlocksUnlinked.
2015-03-27 17:24:07 -07:00
Wladimir J. van der Laan
4635a4c4e7 Translations update from transifex 2015-03-26 08:59:53 +01:00
Ruben de Vries
78f64ef0b2 don't trickle for whitelisted nodes
Rebased-From: fc720207e0
Github-Pull: #5942
2015-03-26 08:39:00 +01:00
Alex Morcos
1d2cdd2ef9 Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates
Rebased-From: cd3d67cf3b
Github-Pull: #5890
2015-03-24 14:51:36 +01:00
dexX7
c9e022b7ee Initialization: set Boost path locale in main thread
The path locale is lazy initialized and to avoid deinitialization errors
in multithreading environments, it is set explicitly by the main thread.

Conflicts:
	src/util.cpp
Rebased-From: 317e66c741
Github-Pull: #5877
2015-03-24 08:45:24 +01:00
Cory Fields
8752b5c882 0.10 fix for crashes on OSX 10.6
strnlen is available at build-time but not at runtime, causing a crash.

0.11 drops support for 10.6, so this is not needed in master.
2015-03-19 00:14:28 -04:00
Wladimir J. van der Laan
601327be8c bump version to 0.10.1 in preparation of RC1 2015-03-18 13:01:10 +01:00
Pieter Wuille
ca301bf98c Reduce fingerprinting through timestamps in 'addr' messages.
Suggested by Jonas Nick.

Rebased-From: 9c2737901b
Github-Pull: #5860
2015-03-17 16:39:10 +01:00
Jonas Schnelli
2c0840631d [QT] some mac specifiy cleanup (memory handling, unnecessary code)
Rebased-From: 8b60808c1e
Github-Pull: #5880
2015-03-16 13:56:34 +01:00
Jonas Schnelli
81145a6ccd [QT] fix OSX dock icon window reopening
fixes #5878

Rebased-From: 89e70e931d
Github-Pull: #5880
2015-03-16 13:56:13 +01:00
Alex Morcos
c91c660e49 fix InvalidateBlock to repopulate setBlockIndexCandidates
Rebased-From: a9af415887
Github-Pull: #5879
2015-03-12 17:51:00 +01:00
Cory Fields
002c8a2411 fix possible block db breakage during re-index
When re-indexing, there are a few cases where garbage data may be skipped in
the block files. In these cases, the indices are correctly written to the index
db, however the pointer to the next position for writing in the current block
file is calculated by adding the sizes of the valid blocks found.

As a result, when the re-index is finished, the index db is correct for all
existing blocks, but the next block will be written to an incorrect offset,
likely overwriting existing blocks.

Rather than using the sum of all valid blocks to determine the next write
position, use the end of the last block written to the file. Don't assume that
the current block is the last one in the file, since they may be read
out-of-order.

Rebased-From: bb6acff079
Github-Pull: #5864
2015-03-11 08:34:43 +01:00
Ivan Pustogarov
200f29363b Ignore getaddr messages on Outbound connections.
The only time when a client sends a "getaddr" message is when he
esatblishes an Outbound connection (see ProcessMessage() in
src/main.cpp).  Another bitcoin client is expected to receive a
"getaddr" message only on Inbound connection. Ignoring "gettaddr"
requests on Outbound connections can resolve potential privacy issues
(and as was said such request normally do not happen anyway).

Rebased-From: dca799e1db
Github-Pull: #5442
2015-03-09 12:25:20 +01:00
Pieter Wuille
d5d8998028 Limit message sizes before transfer
This introduces a fixed limit for the size of p2p messages, and enforces it
before download.

Rebased-From: ba04c4a780
Github-Pull: #5843
2015-03-09 11:13:35 +01:00
Jonas Schnelli
786cf72c7f [Qt] fix a issue where "command line options"-action overwrite "Preference"-action (on OSX)
- fixes #5800

Conflicts:
	src/qt/bitcoingui.cpp

Rebased-From: 9bbb880be4
Github-Pull: #5858
2015-03-09 11:05:43 +01:00
Pieter Wuille
aeb9279228 Better fingerprinting protection for non-main-chain getdatas.
With headers-first we can compare against the best header timestamp, rather
than using checkpoints which require code updates to maintain.

Rebased-From: 85da07a5a0
Github-Pull: #5820
2015-02-26 17:14:14 +01:00
Gregory Maxwell
23126a0a09 Sanitize command strings before logging them.
Normally bitcoin core does not display any network originated strings without
 sanitizing or hex encoding.  This wasn't done for strcommand in many places.

This could be used to play havoc with a terminal displaying the logs,
 especially with printtoconsole in use.

Thanks to Evil-Knievel for reporting this issue.

Conflicts:
	src/main.cpp
2015-02-24 08:40:07 +01:00
Suhas Daftuar
d148f62e00 Acquire CCheckQueue's lock to avoid race condition
This fixes a potential race condition in the CCheckQueueControl constructor,
which was looking directly at data in CCheckQueue without acquiring its lock.

Remove the now-unnecessary friendship for CCheckQueueControl

Rebased-From: cf008ac8c3
Github-Pull: #5721
2015-02-23 19:34:24 +01:00
fsb4000
7f502be259 fix crash: createmultisig and addmultisigaddress
Rebased-From: e5d9d77df2
Github-Pull: #5706
2015-02-20 09:53:44 +01:00
Gregory Maxwell
1eb14af28f Increase block download timeout base from 10 to 20 minutes.
This harmonizes the block fetch timeout with the existing ping timeout
 and eliminates a guaranteed eventual failure from congestion collapse
 for a network operating right at its limit.

It's unlikely that we wouldn't suffer other failures if we were really
 anywhere near the network's limit, and a complete avoidance of congestion
 collapse risk requires (I think) an exponential back-off. So this isn't
 a major concern, but I think it's also useful for reducing the complexity
 of understanding out timeouts.

Github-Pull: #5647
Rebased-From: 3ff735c99a
2015-02-03 10:37:30 +01:00
Wladimir J. van der Laan
336f9fbd30 Merge pull request #5714
3916a81 Increase coverage of DERSIG edge cases (Pieter Wuille)
6da2028 Add RPC test for DERSIG BIP switchover logic (Pieter Wuille)
773c30d BIP66 changeover logic (Pieter Wuille)
18695f0 Example unit tests from BIP66 (Pieter Wuille)
abfbeaf Change IsDERSignature to BIP66 implementation (Pieter Wuille)
2015-02-03 10:33:58 +01:00
Alex Morcos
b6347bf813 Fix priority calculation in CreateTransaction
Make this projection of priority in 1 block match the calculation in the low priority reject code.

Rebased-From: 2d9b0b7f03
Github-Pull: #5675
2015-02-03 09:04:20 +01:00
Pieter Wuille
2448d34298 Avoid storing a reference passed to SignatureChecker constructors
Rebased-From: 9fddceda44
Github-Pull: #5719
2015-02-03 08:52:13 +01:00