Commit Graph

9498 Commits

Author SHA1 Message Date
cd381d7719 Merge pull request #6648
9cdc335 Simplify logic of REST request suffix parsing. (Daniel Kraft)
2015-09-08 14:51:22 +02:00
7a7e68d1e2 Prune the -prune help to reflect that the wallet is no longer disabled.
The wallet hasn't been disabled since 3201035f22.
2015-09-07 18:49:12 +00:00
9cdc3353c5 Simplify logic of REST request suffix parsing.
This patch changes the way the suffix (giving the requested data format) is
parsed for REST requests.  Before, the string was split at '.'
characters and it was assumed that the second part was the suffix.

Now, we look for the last dot and use that to determine the suffix.
This allows for strings that contain dots (not used now, though), and
seems, in general, to be clearer and more intuitive.
2015-09-07 20:38:03 +02:00
a1df1e870b [docs] add libevent dependency to build-osx.md 2015-09-07 13:31:16 +02:00
77c6072473 Enable wallet key imports without rescan in pruned mode.
Complete rescan is incompatible with pruning, but rescan is optional on
 our wallet key import RPCs.  Import on use is very useful in some common
 situations in conjunction with pruning, e.g. merchant payment tracking.

This reenables importprivkey/importaddress/importpubkey when rescan
 is not used.

In the future we should consider changing the rescan argument to allow depth
 or date to allow limited rescanning when compatible with the retained
 block depth.
2015-09-07 01:28:32 +00:00
238851bf64 [doc] [tor] Clarify when to use bind
c.f. #6585
2015-09-06 18:17:35 +02:00
afb0ccaf9c Add NODE_BLOOM service bit and bump protocol version
Lets nodes advertise that they offer bloom filter support explicitly.
The protocol version bump allows SPV nodes to assume that NODE_BLOOM is
set if NODE_NETWORK is set for pre-70011 nodes.

Also adds an option to turn bloom filter support off for nodes which
advertise a version number >= 70011. Nodes attempting to use bloom
filters on such protocol versions are banned, and a later upgade
should drop nodes of an older version which attempt to use bloom
filters.

Much code stolen from Peter Todd.

Implements BIP 111
2015-09-05 23:29:13 -07:00
5ffaaba3a1 Disallow duplicate windows. 2015-09-04 15:25:42 -04:00
eb3002bb71 [TRIVIAL] Fix typo: exactmath -> exactmatch
... but not yet in trivial tree
2015-09-04 19:22:48 +02:00
536207f316 Merge pull request #6636
93ff1b9 net: correctly initialize nMinPingUsecTime (Wladimir J. van der Laan)
2015-09-04 17:06:48 +02:00
2aee4d268d Merge pull request #6626
f4b9132 Update gitian build guide for Debian 8.1 (fanquake)
2015-09-04 16:31:58 +02:00
93ff1b9041 net: correctly initialize nMinPingUsecTime
`nMinPingUsecTime` was left uninitialized in CNode.
The correct initialization for a minimum-until-now is int64_t's max value, so initialize it to that.
Thanks @MarcoFalke for noticing.
2015-09-04 16:27:38 +02:00
d6a92dd0ea [release notes] mention apache reverse proxy to re-enable SSL 2015-09-04 15:39:49 +02:00
bbc2b39860 Merge pull request #6633
a6eb4ba Report minimum ping time in getpeerinfo (Matt Corallo)
2015-09-04 15:32:03 +02:00
9aa90994ee Merge pull request #5677
d528025 Revert "rpc-tests: re-enable rpc-tests for Windows" (Wladimir J. van der Laan)
1e700c9 doc: update deps in build-unix.md after libevent (Wladimir J. van der Laan)
26c9b83 Move windows socket init to utility function (Wladimir J. van der Laan)
4be0b08 libevent: Windows reuseaddr workaround in depends (Cory Fields)
3a174cd Fix race condition between starting HTTP server thread and setting EventBase() (Wladimir J. van der Laan)
6d2bc22 Document options for new HTTP/RPC server in --help (Wladimir J. van der Laan)
be33f3f Implement RPCTimerHandler for Qt RPC console (Wladimir J. van der Laan)
57d85d9 doc: mention SSL support dropped for RPC in release notes (Wladimir J. van der Laan)
40b556d evhttpd implementation (Wladimir J. van der Laan)
ee2a42b tests: GET requests cannot have request body, use POST in rest.py (Wladimir J. van der Laan)
6e996d3 tests: fix qt payment test (Cory Fields)
3140ef9 build: build-system changes for libevent (Wladimir J. van der Laan)
a9af234 libevent: add depends (Cory Fields)
6a21dd5 Remove rpc_boostasiotocnetaddr test (Wladimir J. van der Laan)
8f9301c qa: Remove -rpckeepalive tests from httpbasics (Wladimir J. van der Laan)
51fcfc0 doc: remove documentation for rpcssl (Wladimir J. van der Laan)
2015-09-04 13:06:32 +02:00
d528025517 Revert "rpc-tests: re-enable rpc-tests for Windows"
This reverts commit bd30c3dced.

Disable windows RPC tests for now. These should be re-enabled once a
suitable Wine version is used on Travis.
2015-09-04 11:01:44 +02:00
1e700c9b60 doc: update deps in build-unix.md after libevent
Add libevent, change usage of libssl from "secure communication" to
"crypto" that's more accurate after RPC SSL support removed.
2015-09-04 10:59:34 +02:00
4b437b227c Merge pull request #6631
e83df07 Update RPC generate help for numblocks to include required (Ian T)
2015-09-04 10:45:27 +02:00
a6eb4ba38b Report minimum ping time in getpeerinfo 2015-09-03 13:06:13 -07:00
195942d58e Merge pull request #6630
86270c8 Replace boost::reverse_lock with our own. (Casey Rodarmor)
2015-09-03 21:46:08 +02:00
86270c8164 Replace boost::reverse_lock with our own. 2015-09-03 15:13:40 -04:00
e83df075f9 Update RPC generate help for numblocks to include required
The `generate` RPC has no default `numblocks` and a numeric value is required.
2015-09-03 13:29:10 -04:00
9524c4d35c In (strCommand == "tx"), return if AlreadyHave()
The main effect is to exit processing for recently-rejected hashes,
in case they are pushed to us without prior advertisement.  This
behavior was seen in the wild.

An additional effect is to do early checks for mempool or mapOrphan
existence.  No logging or nDoS tracking is needed for failures of
these checks.
2015-09-03 10:16:59 -07:00
69dc5b51a0 Merge pull request #6374
027de94 Use network group instead of CNetAddr in final pass to select node to disconnect (Patrick Strateman)
000c18a Fix comment (Patrick Strateman)
fed3094 Acquire cs_vNodes before changing refrence counts (Patrick Strateman)
69ee1aa CNodeRef copy constructor and assignment operator (Patrick Strateman)
dc81dd0 Return false early if vEvictionCandidates is empty (Patrick Strateman)
17f3533 Better support for nodes with non-standard nMaxConnections (Patrick Strateman)
1317cd1 RAII wrapper for CNode* (Patrick Strateman)
df23937 Add comments to AttemptToEvictConnection (Patrick Strateman)
a8f6e45 Remove redundant whiteconnections option (Patrick Strateman)
b105ba3 Prefer to disconnect peers in favor of whitelisted peers (Patrick Strateman)
2c70153 AttemptToEvictConnection (Patrick Strateman)
4bac601 Record nMinPingUsecTime (Patrick Strateman)
ae037b7 Refactor: Move failure conditions to the top of AcceptConnection (Patrick Strateman)
1ef4817 Refactor: Bail early in AcceptConnection (Patrick Strateman)
541a1dd Refactor: AcceptConnection (Patrick Strateman)
2015-09-03 18:27:24 +02:00
5e1ec3b5be Merge pull request #6611
5b85126 Update build-unix.md (Altoidnerd)
2015-09-03 17:19:50 +02:00
0c02a75787 Merge pull request #6627
88f856a [doc] Clarify authors in assets-attribution.md (MarcoFalke)
2015-09-03 17:03:46 +02:00
88f856a9e7 [doc] Clarify authors in assets-attribution.md 2015-09-03 14:22:57 +02:00
26c9b83677 Move windows socket init to utility function 2015-09-03 10:59:19 +02:00
4be0b082b9 libevent: Windows reuseaddr workaround in depends
Make it possible to reuse sockets.
This is necessary to make the RPC tests work in WINE.
2015-09-03 10:59:19 +02:00
3a174cd400 Fix race condition between starting HTTP server thread and setting EventBase()
Split StartHTTPServer into InitHTTPServer and StartHTTPServer to give
clients a window to register their handlers without race conditions.

Thanks @ajweiss for figuring this out.
2015-09-03 10:59:19 +02:00
6d2bc22146 Document options for new HTTP/RPC server in --help 2015-09-03 10:59:19 +02:00
be33f3f50b Implement RPCTimerHandler for Qt RPC console
Implement RPCTimerHandler for Qt RPC console, so that `walletpassphrase`
works with GUI and `-server=0`.

Also simplify HTTPEvent-related code by using boost::function directly.
2015-09-03 10:59:19 +02:00
57d85d9bee doc: mention SSL support dropped for RPC in release notes 2015-09-03 10:59:19 +02:00
40b556d374 evhttpd implementation
- *Replace usage of boost::asio with [libevent2](http://libevent.org/)*.
boost::asio is not part of C++11, so unlike other boost there is no
forwards-compatibility reason to stick with it. Together with #4738 (convert
json_spirit to UniValue), this rids Bitcoin Core of the worst offenders with
regard to compile-time slowness.

- *Replace spit-and-duct-tape http server with evhttp*. Front-end http handling
is handled by libevent, a work queue (with configurable depth and parallelism)
is used to handle application requests.

- *Wrap HTTP request in C++ class*; this makes the application code mostly
HTTP-server-neutral

- *Refactor RPC to move all http-specific code to a separate file*.
Theoreticaly this can allow building without HTTP server but with another RPC
backend, e.g. Qt's debug console (currently not implemented) or future RPC
mechanisms people may want to use.

- *HTTP dispatch mechanism*; services (e.g., RPC, REST) register which URL
paths they want to handle.

By using a proven, high-performance asynchronous networking library (also used
by Tor) and HTTP server, problems such as #5674, #5655, #344 should be avoided.

What works? bitcoind, bitcoin-cli, bitcoin-qt. Unit tests and RPC/REST tests
pass. The aim for now is everything but SSL support.

Configuration options:

- `-rpcthreads`: repurposed as "number of  work handler threads". Still
defaults to 4.

- `-rpcworkqueue`: maximum depth of work queue. When this is reached, new
requests will return a 500 Internal Error.

- `-rpctimeout`: inactivity time, in seconds, after which to disconnect a
client.

- `-debug=http`: low-level http activity logging
2015-09-03 10:59:18 +02:00
f4b9132d0c Update gitian build guide for Debian 8.1
Signed-off-by: fanquake <fanquake@gmail.com>
2015-09-03 15:51:37 +08:00
d4aa54c5af added org.bitcoin.bitcoind.plist for launchd (OS X) 2015-09-02 09:48:40 -07:00
ee2a42b447 tests: GET requests cannot have request body, use POST in rest.py
Sending a request body with GET request is not valid in HTTP spec, and
not compatible with evhttpd.
2015-09-02 18:38:42 +02:00
6e996d39da tests: fix qt payment test
Now that boost no longer automatically initializes openssl, we have to
do it ourselves.
2015-09-02 18:38:41 +02:00
3140ef9249 build: build-system changes for libevent 2015-09-02 18:38:41 +02:00
a9af234c1f libevent: add depends 2015-09-02 18:38:41 +02:00
6a21dd598c Remove rpc_boostasiotocnetaddr test
Dropping all use of boost::asio.
2015-09-02 18:38:41 +02:00
8f9301cdaa qa: Remove -rpckeepalive tests from httpbasics
This option was a temporary workaround, and is no longer necessary
with the new web server.
2015-09-02 18:38:41 +02:00
51fcfc022c doc: remove documentation for rpcssl 2015-09-02 18:38:41 +02:00
3932ff50c5 Merge pull request #6620
10e469a travis: bump wine to 1.7 (Cory Fields)
2015-09-02 18:38:10 +02:00
42cf08905f depends: bump ccache to 3.2.3 2015-09-03 00:05:35 +08:00
888c595cff depends: bump miniupnpc to 1.9.20150730 2015-09-03 00:05:35 +08:00
10e469ae37 travis: bump wine to 1.7 2015-09-02 11:42:27 -04:00
b319f0828e Merge pull request #6617
bfadae3 travis: for travis generating an extra build (Cory Fields)
2015-09-02 17:14:29 +02:00
5b85126863 Update build-unix.md
If a user hasn't ready run autogen.sh, configure doesn't yet exist.  Do the instructions seem to presume you have already built bitcoin?  I don't think they do.

Would stifle beginners.

Update build-unix.md
2015-09-02 05:13:04 -04:00
bfadae3374 travis: for travis generating an extra build 2015-09-01 21:45:23 -04:00