Commit Graph

5782 Commits

Author SHA1 Message Date
Casey Rodarmor
6b51b9b195 Replace boost::reverse_lock with our own. 2015-09-22 00:43:13 +00:00
Casey Rodarmor
626c5e6936 Make sure we re-acquire lock if a task throws 2015-09-22 00:43:13 +00:00
Adam Weiss
f171fee035 Handle leveldb::DestroyDB() errors on wipe failure
Add error checking to CLevelDBWrapper for errors from
leveldb::DestroyDB().  Without it, if unlink() or DeleteFileW() fail to
delete files, they will fail silent.  If they fail to delete any files,
CLevelDBWrapper will silently open and read the existing database.

Typically any permissions issues would be caught by leveldb as it churns
through many files as part of its compaction process, but it is
conceivable that this could cause problems on Windows with anti-virus
and indexing software.
2015-09-22 00:43:13 +00:00
Ross Nicoll
4a3741028e Handle no chain tip available in InvalidChainFound()
Handle the case where no chain tip is available, in InvalidChainFound(). This fixes a null pointer deference when running unit tests, if the genesis block or block validation code is broken.
2015-09-22 00:43:12 +00:00
Casey Rodarmor
f6d29a6ca8 Use unique name for AlertNotify tempfile 2015-09-22 00:43:12 +00:00
Adam Weiss
e6adac7b3f Delay initial pruning until after wallet init
Don't prune until any wallet rescanning has taken place to avoid
potentially pruning blocks that the wallet rescan may need.
2015-09-22 00:43:12 +00:00
J Ross Nicoll
e0020d4c44 Make sure LogPrint strings are line-terminated 2015-09-22 00:43:11 +00:00
Wladimir J. van der Laan
7ff9d122e4 Make sure LogPrintf strings are line-terminated
Fix the cases where LogPrint[f] was accidentally called without line
terminator, which resulted in concatenated log lines.

(see e.g. #6492)
2015-09-22 00:43:11 +00:00
Casey Rodarmor
f6355e6918 Avoid leaking file descriptors in RegisterLoad
This is pretty trivial, but if there's an error here we'll leak a file
descriptor. Changed it to always close the file.
2015-09-22 00:43:11 +00:00
Cory Fields
60457d3c2f locking: fix a few small issues uncovered by -Wthread-safety
- rpcwallet: No need to lock twice here
- openssl: Clang doesn't understand selective lock/unlock here. Ignore it.
- CNode: Fix a legitimate (though very unlikely) locking bug.
2015-09-22 00:43:10 +00:00
Wladimir J. van der Laan
e092f22951 qt: define QT_NO_KEYWORDS
QT_NO_KEYWORDS prevents Qt from defining the `foreach`, `signals`,
`slots` and `emit` macros.

Avoid overlap between Qt macros and boost - for example #undef hackiness
in #6421.

Conflicts:
	src/qt/addressbookpage.cpp
	src/qt/peertablemodel.cpp
	src/qt/receivecoinsdialog.cpp
	src/qt/rpcconsole.cpp

Rebased-From: d29ec6c2301e593d577126d1ca85b93307b32bf1
Github-Pull: #6433
2015-07-15 10:24:49 +02:00
Wladimir J. van der Laan
41bbc85ec9 Hardcoded seeds update June 2015
- Moved all seed related scripts to contrib/seeds for consistency
- Updated `makeseeds.py` to handle IPv6 and onions, fix regular
  expression for recent Bitcoin Core versions
- Fixed a bug in `generate-seeds.py` with regard to IPv6 parsing

Allow for non-8333 nodes to appear in the internal seeds. This will
allow bitcoind to bypas a filter on 8333. This also makes it possible to
use the same tool for e.g. testnet.

As hosts with multiple nodes per IP are likely abusive, add a filter to
remove these (the ASN check will take care of them for IPv4, but not
IPv6 or onion).

Github-Pull: #6333
Rebased-From: ccd4369a23ca78cc348bc66a7a8c69a971ffcbf7 884454aebe9e20964643b70ff8c41f47709380bc b9329536cd8a6c152b41c9276f1def14b4d2442d
2015-06-25 17:10:09 +02:00
Suhas Daftuar
a587606525 Advance pindexLastCommonBlock for blocks in chainActive
This prevents an edge case where a block downloaded and pruned
in-between successive calls to FindNextBlocksToDownload could
cause the block to be unnecessarily re-requested.

Github-Pull: #6233
Rebased-From: 3e9143386a90e508c8d41719294db11264f5f0a0
2015-06-25 16:42:28 +02:00
Philip Kaufmann
daf956b7b1 fix crash on shutdown when e.g. changing -txindex and abort action
- fixes #3136
- the problem is related to Boost path and a static initialized internal
  pointer
- using a std::string in CDBEnv::EnvShutdown() prevents the problem
- this removes the boost::filesystem::path path field from CDBEnv

Github-Pull: #6282
Rebased-From: 0ce30eaa36295447c6e7f8d16a05798c746fe28a
2015-06-23 10:12:11 +02:00
Andriy Voskoboinyk
8ea6d37aee Add an alternate location of endian.h header
Github-Pull: #6246
Rebased-From: 0640a5eb60b06de61f873fd88ae0252f5a11c339
2015-06-23 09:03:09 +02:00
Wladimir J. van der Laan
e6334f4aad Revert "Disable partition check for now, it triggers too often (issue #6251)"
Re-enable partition check, it should be safe again after #6256.

This reverts commit 3eada74d6f.
2015-06-21 17:51:01 +02:00
Cory Fields
ef1d506054 Fix scheduler build with some boost versions.
Some boost versions have a conflicting overload of wait_until that returns void.
Explicitly use a template here to avoid hitting that overload.

Github-Pull: #6285
Rebased-From: 72bf90d770ce5b2653fd482928646cd6a9f5f6d7
2015-06-16 13:57:21 +02:00
Wladimir J. van der Laan
2617b75e15 translation update pre-rc2 2015-06-15 18:02:26 +02:00
Gavin Andresen
fce474c9df Use best header chain timestamps to detect partitioning
The partition checking code was using chainActive timestamps
to detect partitioning; with headers-first syncing, it should use
(and with this pull request, does use) pIndexBestHeader timestamps.

Fixes issue #6251

Github-Pull: #6256
Rebased-From: 65b94545036ae6e38e79e9c7166a3ba1ddb83f66
2015-06-15 10:34:07 +02:00
Wladimir J. van der Laan
4d9c7fe61d Add option -alerts to opt out of alert system
Make it possible to opt-out of the centralized alert system by providing
an option `-noalerts` or `-alerts=0`. The default remains unchanged.

This is a gentler form of #6260, in which I went a bit overboard by
removing the alert system completely.

I intend to add this to the GUI options in another pull after this.

Github-Pull: #6274
Rebased-From: 02a6702a82a5b00e0e0351041dd3267308b7f319
2015-06-15 09:58:05 +02:00
Tom Harding
c9fd9078ce 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: 7d6a85ab5b1dc96e0f3f6f835f27bb81ba2af919
2015-06-15 09:03:25 +02:00
Wladimir J. van der Laan
94cd7051a3 Remove translation for -help-debug options
Github-Pull: #6264
Rebased-From: 9b5659d1c4c62bc6b80e35ff7573c781835e4187
2015-06-12 15:12:14 +02:00
Adam Weiss
6cb70ca4ee Prune: Support noncontiguous block files
In some corner cases, it may be possible for recent blocks to end up in
the same block file as much older blocks.  Previously, the pruning code
would stop looking for files to remove upon first encountering a file
containing a block that cannot be pruned, now it will keep looking for
candidate files until the target is met and all other criteria are
satisfied.

This can result in a noncontiguous set of block files (by number) on
disk, which is fine except for during some reindex corner cases, so
make reindex preparation smarter such that we keep the data we can
actually use and throw away the rest.  This allows pruning to work
correctly while downloading any blocks needed during the reindex.

Rebased-From: c257a8c9a6397eee40734b235a4fdcb8045aec91
Github-Pull: #6221
2015-06-11 18:25:45 +02:00
Alex Morcos
37b4e425af Fix removing of orphan transactions
We don't want to erase orphans that still have missing inputs, they should still be tracked as orphans.  Also, the transaction thats being accepted can't be an orphan otherwise it would have previously been accepted, so doesn't need to be added to the erase queue.

Github-Pull: #5985
Rebased-From: 14d4eef79931318cb5968f9154cf458d9f8d27fa
2015-06-10 12:16:11 +02:00
Wladimir J. van der Laan
3eada74d6f Disable partition check for now, it triggers too often (issue #6251) 2015-06-08 10:14:44 +02:00
Suhas Daftuar
304892fc03 Be stricter in processing unrequested blocks
AcceptBlock will no longer process an unrequested block, unless it has not
been previously processed and has more work than chainActive.Tip()

Github-Pull: #5875
Rebased-From: 9be0e6837b878f72bd087ce32b7a2f2ffb2fd544
2015-06-03 16:23:46 +02:00
Wladimir J. van der Laan
5901596548 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: 4e157fc60dae5ca69933ea4c1585a2a078b4d957
2015-06-03 15:16:37 +02:00
Luke Dashjr
c00ae64f77 Remove P2SH coinbase flag, no longer interesting
Github-Pull: #6203
Rebased-From: d449772cf69c01932fc5d72c46054815d6300b3c
2015-06-02 09:13:03 +02:00
Suhas Daftuar
b4bbad18ef Ignore getheaders requests when not synced.
Rebased-From: a1ba0778dd3c784046dea334e5d39f37eca264f7
Github-Pull: #6172
2015-06-02 07:57:04 +02:00
Peter Todd
75a4d512cf Fix off-by-one error w/ nLockTime in the wallet
Previously due to an off-by-one error the wallet ignored
nLockTime-by-height transactions that would be valid in the next block
even though they are accepted into the mempool. The transactions
wouldn't show up until confirmed, nor would they be included in the
unconfirmed balance. Similar to the mempool behavior fix in 665bdd3b,
the wallet code was calling IsFinalTx() directly without taking into
account the fact that doing so tells you if the transaction could have
been mined in the *current* block, rather than the next block.

To fix this we strip IsFinalTx() of non-consensus-critical
functionality, removing the default arguments, and add CheckFinalTx() to
check if a transaction will be final in the next block.

Github-Pull: #6183
Rebased-From: 28bf06236d3b385e95fe26a7a742395b30efd6ee
2015-06-01 12:35:49 +02:00
Wladimir J. van der Laan
2be094eeba qt: Periodic translation update 2015-06-01 12:35:05 +02:00
Wladimir J. van der Laan
8e15efa76c Bump version to 0.11 2015-06-01 10:25:26 +02:00
Wladimir J. van der Laan
e9d0d252fc Merge pull request #6208
d6922aa [net, trivial] remove using namespace std pollution in netbase.cpp (Philip Kaufmann)
49b2292 [net, trivial] explicitly use std::string for FindNode (Philip Kaufmann)
2015-06-01 09:53:45 +02:00
Wladimir J. van der Laan
42746b0476 Merge pull request #6193
6e71efa [REST] remove json input for getutxos, limit to query max. 15 outpoints (Jonas Schnelli)
64b8027 rest.cpp: strip whitespace (Jonas Schnelli)
2015-06-01 09:48:17 +02:00
Wladimir J. van der Laan
921ea89bc3 Merge pull request #6195
8273793 Eliminate compiler warning due to unused variable (Suhas Daftuar)
2015-06-01 08:49:47 +02:00
Philip Kaufmann
d6922aad2c [net, trivial] remove using namespace std pollution in netbase.cpp 2015-05-31 15:48:23 +02:00
Philip Kaufmann
49b22928ee [net, trivial] explicitly use std::string for FindNode
- in OpenNetworkConnection we have a FindNode call, which gets a const
  char*, wheras we only have defined a FindNode for std::string
2015-05-31 15:44:22 +02:00
Jonas Schnelli
6e71efa9f0 [REST] remove json input for getutxos, limit to query max. 15 outpoints
Remove possibility to send json encoded parameters to `/rest/getutxos/` to avoid possible DoS scenarios.

The JSON output option is untouched.
2015-05-27 20:10:02 +02:00
Suhas Daftuar
8273793350 Eliminate compiler warning due to unused variable 2015-05-27 13:04:59 -04:00
Jorge Timón
e69734309c Chainparams: Explicit CMessageHeader::MessageStartChars to functions in main:
-UndoWriteToDisk
-WriteBlockToDisk
2015-05-27 16:01:07 +02:00
Wladimir J. van der Laan
c7c9af381c Merge pull request #5669
da29ecb Consensus: MOVEONLY: Move CValidationState from main consensus/validation (jtimon)
27afcd8 Consensus: Refactor: Decouple CValidationState from main::AbortNode() (Cory Fields)
2015-05-27 15:00:02 +02:00
Jonas Schnelli
64b8027c5c rest.cpp: strip whitespace 2015-05-27 09:41:14 +02:00
Wladimir J. van der Laan
0bcf04f046 Merge pull request #6153
8c35b6f Parameter interaction: disable upnp if -proxy set (Wladimir J. van der Laan)
2015-05-27 09:33:01 +02:00
Wladimir J. van der Laan
182686cdbd Merge pull request #6186
b45c50c Fix two problems in CSubNet parsing (Wladimir J. van der Laan)
19e8d7b Simplify code for CSubnet (Wladimir J. van der Laan)
2015-05-27 09:08:39 +02:00
Wladimir J. van der Laan
165e323d85 qt: Periodic translation update 2015-05-26 14:36:47 +02:00
Wladimir J. van der Laan
9f7809f6c3 Merge pull request #5976
8ba7f84 Reduce download timeouts as blocks arrive (Suhas Daftuar)
2015-05-26 13:02:40 +02:00
Michael Ford
8697ff33ed Remove duplicate chainparams.h include from alert_tests 2015-05-26 17:16:21 +08:00
Wladimir J. van der Laan
e9af4e65b5 Merge pull request #5947
36cba8f Alert if it is very likely we are getting a bad chain (Gavin Andresen)
2015-05-26 10:41:17 +02:00
Wladimir J. van der Laan
b45c50ce51 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.
2015-05-26 08:59:59 +02:00
Wladimir J. van der Laan
19e8d7be42 Simplify code for CSubnet
Simplify the code by using CAddress.ip directly, instead of the reversed
GetByte() semantics.
2015-05-26 08:59:13 +02:00