Commit Graph

9408 Commits

Author SHA1 Message Date
Jack Grigg 5a1e6853c1 build: Add -lpthread to univalue test LDFLAGS
Fixes missing symbols when running the univalue test suite.
2020-10-13 19:38:40 +01:00
Jack Grigg e917cb614f build: Compile secp256k1 with C99
The secp256k1 library is intended to be C89-compatible. Targeting both
C89 and MinGW with Clang triggers this bug that is fixed in MinGW 8.0.0:
    bedff472af

Rather than requiring MinGW 8, we compile secp256k1 targeting C99.
2020-10-13 17:17:26 +01:00
Jack Grigg 2ca72adf8b build: Add missing LIBUNIVALUE to Makefile.bench.include LDADD 2020-10-13 14:12:41 +01:00
Daira Hopwood d3330ab797 Fix warnings surfaced by compiling with clang++.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-12 17:55:12 +01:00
Daira Hopwood acf2d07189 Fix a new warning about use of boost::bind placeholders after updating Boost. closes #4774
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-10 21:41:46 +01:00
Jack Grigg b42582395b MOVEONLY: Move logging code from util.{h,cpp} to new files
Based on bitcoin/bitcoin#13021 but implemented from scratch.

This introduces a cyclic dependency between `logging` and `util` that
should be cleaned up in a future PR.
2020-10-09 16:32:02 +01:00
Homu e2d3533de3 Auto merge of #4773 - str4d:4651-combined-params-init, r=daira
FFI: Merge librustzcash_init_zksnark_params variants into one function

Rust 1.39.0 added support for attributes on function parameters.

Closes #4651.
2020-10-09 11:15:40 +00:00
Homu ce26c21fb4 Auto merge of #4772 - daira:log-invalid-notept, r=daira
Add logging when we receive an invalid note plaintext (using the "receiveunsafe" log category)

fixes #4735

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-08 23:35:53 +00:00
Jack Grigg 508aadd2f3 FFI: Merge librustzcash_init_zksnark_params variants into one function
Rust 1.39.0 added support for attributes on function parameters.

Closes #4651.
2020-10-08 22:50:57 +01:00
Daira Hopwood 007de07745 Add logging when we receive an invalid note plaintext (using the "receiveunsafe" log category).
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-08 14:29:23 +01:00
mruddy edfb4d98e7 [depends, zmq, doc] avoid deprecated zeromq api functions
Zcash: Backported from bitcoin/bitcoin#13578
2020-10-05 22:54:19 +01:00
Jack Grigg a9f62bdda0 depends: Boost 1.74.0
- The old patch is no longer necessary because of this upstream fix:
    https://github.com/boostorg/build/pull/560

- Boost 1.72 removed a <deque> from an include, which exposed a missing
  include in src/httpserver.cpp.

- Boost 1.73 moved function placeholders into the boost::placeholders
  namespace.

- The new patch is a fix from just after Boost 1.74 was released, fixing
  a warning that was missed.
2020-10-05 19:48:46 +01:00
Homu eb4c9ea0a3 Auto merge of #4484 - defuse:fix-undefined-behavior-in-bitcoin-test, r=str4d
Fix undefined behavior in the test_bitcoin tests
2020-10-01 15:19:39 +00:00
Taylor Hornby 3693b96ed4 Fix undefined behavior in the test_bitcoin tests 2020-10-01 13:59:47 +01:00
Homu a983344931 Auto merge of #4752 - str4d:small-httpserver-backports, r=daira
Small httpserver.cpp backports

Also includes a change to the `uiInterface.NotifyBlockTip` signal API.
These remove merge conflicts from subsequent backports for `sync.h`.

Cherry-picked from the following upstream PRs:
- bitcoin/bitcoin#6859
- bitcoin/bitcoin#7112
  - Only the non-QT changes.
- bitcoin/bitcoin#7966
- bitcoin/bitcoin#8421
  - We already backported the second commit in zcash/zcash#2555
2020-10-01 12:48:58 +00:00
str4d 2fbc111efb
httpserver: Code style cleanups
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-10-01 13:46:21 +01:00
Daira Hopwood ce0654e13a Cosmetics in CScriptNum code and tests.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-01 00:34:31 +01:00
Daira Hopwood 932d627753 It's unnecessary to pass int64_t by const reference.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-01 00:34:31 +01:00
Daira Hopwood f432fe5ebf Add assertions for CScriptNum[10] +/- int64_t to avoid the possibility of UB.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-01 00:34:31 +01:00
Daira Hopwood 9ba10a8071 Avoid undefined behaviour in scriptnum tests.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-10-01 00:34:31 +01:00
Cory Fields 860e6e600c httpserver: replace boost threads with std
along with mutex/condvar/bind/etc.

httpserver handles its own interruption, so there's no reason not to use std
threading.

While we're at it, may as well kill the BOOST_FOREACH's as well.
2020-09-30 12:48:35 +01:00
Cory Fields 97194f2abc httpserver: use a future rather than relying on boost's try_join_for 2020-09-30 12:48:35 +01:00
Wladimir J. van der Laan 26efd3aaf9 http: use std::move to move HTTPRequest into HTTPWorkItem
Thanks to Cory Fields for the idea.
2020-09-30 12:48:35 +01:00
Wladimir J. van der Laan a500df5561 http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequest
No need for boost here.
2020-09-30 12:48:35 +01:00
Wladimir J. van der Laan 1f106fa803 http: Add log message when work queue is full
More useful error reporting.
2020-09-30 12:48:35 +01:00
Wladimir J. van der Laan fc9ce9e766 http: Do a pending c++11 simplification
Use std::unique_ptr for handling work items.

This makes the code more RAII and, as mentioned in the comment, is what
I planned when I wrote the code in the first place.
2020-09-30 12:48:35 +01:00
Daira Hopwood b165ead16a Minor additional OpenSSL scouring.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-09-30 10:44:42 +01:00
Jack Grigg ab35a260d5 Remove remaining OpenSSL references 2020-09-30 00:40:12 +01:00
Jack Grigg ce1b5491db util: Remove OpenSSL multithreading infrastructure 2020-09-30 00:40:12 +01:00
fanquake 4526ecf9b2 doc: remove OpenSSL from build instructions and licensing info 2020-09-30 00:40:12 +01:00
fanquake 0ad49bca44 build: remove OpenSSL detection and libs 2020-09-30 00:40:12 +01:00
fanquake 8993f1f708 build: remove SSL lib detection 2020-09-30 00:40:12 +01:00
practicalswift c28c9b96a1 tests: Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt 2020-09-30 00:40:12 +01:00
Wladimir J. van der Laan 7b3cb48232 Replace scriptnum_test's normative ScriptNum implementation
Compare against the scriptnum from Bitcoin Core 0.10 instead of OpenSSL.
Closes #7086.
2020-09-30 00:40:12 +01:00
Jonas Schnelli 220e166e47 Move uiInterface.NotifyBlockTip signal above the core/wallet signal
- This will keep getbestblockhash more in sync with blocknotify callbacks
2020-09-30 00:35:32 +01:00
Jonas Schnelli 66515b0628 NotifyBlockTip signal: switch from hash (uint256) to CBlockIndex*
- also adds a boolean for indication if the tip update was happening during initial sync
- emit notification also during initial sync
2020-09-30 00:35:32 +01:00
Wladimir J. van der Laan 23556e690e http: Restrict maximum size of request line + headers
Prevent memory exhaustion by sending lots of data.
Also add a test to `httpbasics.py`.

Closes #6425
2020-09-30 00:35:32 +01:00
Homu 7d94064616 Auto merge of #4643 - str4d:locked-memory-manager, r=str4d
Locked memory manager

Add a pool for locked memory chunks, replacing `LockedPageManager`.

Cherry-picked from the following upstream PRs:
- bitcoin/bitcoin#8321
- bitcoin/bitcoin#8753
- bitcoin/bitcoin#9063
- bitcoin/bitcoin#9070
- bitcoin/bitcoin#11385
- bitcoin/bitcoin#12048
  - Excludes change to benchmark.
- bitcoin/bitcoin#15117
- bitcoin/bitcoin#16161
  - Excludes Travis CI changes.
  - Includes change from bitcoin/bitcoin#13163
- bitcoin/bitcoin#15600
- bitcoin/bitcoin#18443
- Assorted small changes from:
  - bitcoin/bitcoin#9233
  - bitcoin/bitcoin#10483
  - bitcoin/bitcoin#10645
  - bitcoin/bitcoin#10969
  - bitcoin/bitcoin#11351
- bitcoin/bitcoin#19111
  - Excludes change to `src/rpc/server.cpp`
- bitcoin/bitcoin#9804
  - Only the commit for `src/key.cpp`
- bitcoin/bitcoin#9598
2020-09-29 22:18:48 +00:00
Homu 94cf4a4946 Auto merge of #4558 - linuxion:master, r=str4d
[RPC] Add transaction size to JSON output

Cherry-picked from upstream PR https://github.com/bitcoin/bitcoin/pull/7072.
2020-09-28 22:40:09 +00:00
Nick abcce56fe1 [RPC] Add transaction size to JSON output
This may be useful for blockchain explorers.
2020-09-28 23:12:21 +01:00
Jack Grigg 55acaf4bc5 allocators: Apply Allocator named requirements to secure_allocator::deallocate
The named requirements for Allocator are here:
    https://en.cppreference.com/w/cpp/named_req/Allocator

It gives the following requirements for `a.deallocate(p, n)`:

> Deallocates storage pointed to `p`, which must be a value returned by
> a previous call to `allocate` that has not been invalidated by an
> intervening call to `deallocate`. `n` must match the value previously
> passed to `allocate`. Does not throw exceptions.

This explicitly excludes both calling `secure_allocator::deallocate` on
`nullptr`, and throwing exceptions of any kind. We address the former by
asserting that `p != nullptr` (because `LockedPool::free` does support
`nullptr`), and we address the latter by adding the `noexcept` keyword
(which the example C++11 allocator on the page above also uses).
2020-09-28 16:22:43 +01:00
Jack Grigg 66ac442da8 LockedPool: Make Arena::free and LockedPool::free noexcept
Attempting to free a detectably invalid pointer should terminate, as
this would be a programming error.
2020-09-28 16:20:06 +01:00
Jack Grigg fa6921c480 LockedPool: Fix LockedPool::free(nullptr) to be a no-op
It was documented as such, but nullptr is never an address within an
Arena, so it would fall through and trigger the std::runtime_error.
2020-09-28 15:46:00 +01:00
str4d b2b5cccf39
test: Fix LFSR period in comments
Verified using a Python implementation.

Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-09-26 00:56:20 +01:00
str4d b5ddac4b71
LockedPool: Switch to HTTPS URLs in licenses and comments
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-09-26 00:30:45 +01:00
Homu 514d868179 Auto merge of #4739 - str4d:update-leveldb, r=str4d
Update LevelDB to upstream commit f545dfabf

Cherry-picked from the following upstream PRs:

- bitcoin/bitcoin#7911
- bitcoin/bitcoin#7982
- bitcoin/bitcoin#8133
- bitcoin/bitcoin#8784
  - Only the missing changes.
- bitcoin/bitcoin#8826
- bitcoin/bitcoin#8613
- bitcoin/bitcoin#10544
- bitcoin/bitcoin#10633
  - Only the changes to files and code we have.
- bitcoin/bitcoin#10806
- bitcoin/bitcoin#10958
- bitcoin/bitcoin#12451
- bitcoin/bitcoin#13925
- bitcoin/bitcoin#15270

This upgrades LevelDB in the exact same commit progression as upstream, up to January 2019.
2020-09-25 16:16:37 +00:00
str4d f4c78c45b5
leveldb: Fix typo
Co-authored-by: Dimitris Apostolou <dimitris.apostolou@icloud.com>
2020-09-25 16:02:52 +01:00
str4d e2eeabe9e0
Update license headers
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-09-25 16:02:25 +01:00
Jack Grigg f5582677a6 leveldb: Assert that ssize_t is the same size as size_t on Windows
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-09-25 15:59:05 +01:00
Jack Grigg 3d79da1beb build: out-of-tree fixups
Accidentally excluded from 9cc7497692 when
backporting upstream commit 0cb0f2626e1553426e16a52fc6928d35824827f5.
2020-09-25 15:39:08 +01:00