Commit Graph

12374 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
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
Wladimir J. van der Laan
6d2bc22146 Document options for new HTTP/RPC server in --help 2015-09-03 10:59:19 +02:00
Wladimir J. van der Laan
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
Wladimir J. van der Laan
57d85d9bee doc: mention SSL support dropped for RPC in release notes 2015-09-03 10:59:19 +02:00
Wladimir J. van der Laan
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
fanquake
f4b9132d0c Update gitian build guide for Debian 8.1
Signed-off-by: fanquake <fanquake@gmail.com>
2015-09-03 15:51:37 +08:00
evan82
e5e655a165 Merge pull request #596 from UdjinM6/translations20150902_
translations 20150902
2015-09-02 14:35:16 -07:00
UdjinM6
8d1609f0a5 translations 20150902 2015-09-03 00:32:34 +03:00
UdjinM6
2fc59109ae translations 20150902 2015-09-03 00:27:40 +03:00
Evan Duffield
386a39d00e fixed compile err 2015-09-02 09:53:53 -07:00
Kevin Cooper
d4aa54c5af added org.bitcoin.bitcoind.plist for launchd (OS X) 2015-09-02 09:48:40 -07:00
Wladimir J. van der Laan
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
Cory Fields
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
Wladimir J. van der Laan
3140ef9249 build: build-system changes for libevent 2015-09-02 18:38:41 +02:00
Cory Fields
a9af234c1f libevent: add depends 2015-09-02 18:38:41 +02:00
Wladimir J. van der Laan
6a21dd598c Remove rpc_boostasiotocnetaddr test
Dropping all use of boost::asio.
2015-09-02 18:38:41 +02:00
Wladimir J. van der Laan
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
Wladimir J. van der Laan
51fcfc022c doc: remove documentation for rpcssl 2015-09-02 18:38:41 +02:00
Wladimir J. van der Laan
3932ff50c5
Merge pull request #6620
10e469a travis: bump wine to 1.7 (Cory Fields)
2015-09-02 18:38:10 +02:00
fanquake
42cf08905f depends: bump ccache to 3.2.3 2015-09-03 00:05:35 +08:00
fanquake
888c595cff depends: bump miniupnpc to 1.9.20150730 2015-09-03 00:05:35 +08:00
Cory Fields
10e469ae37 travis: bump wine to 1.7 2015-09-02 11:42:27 -04:00
Wladimir J. van der Laan
b319f0828e
Merge pull request #6617
bfadae3 travis: for travis generating an extra build (Cory Fields)
2015-09-02 17:14:29 +02:00
Evan Duffield
0111107853 Merge branch 'v0.12.0.x' 2015-09-02 05:22:45 -07:00
Evan Duffield
eebb03eb13 reduce memory usage 2015-09-02 05:20:06 -07:00
Evan Duffield
25894972c1 reduce memory usage 2015-09-02 05:13:32 -07:00
Evan Duffield
aaeda811db Revert "fix - ds can leak info by number of inputs"
This reverts commit f98fe6a208.
2015-09-02 05:06:22 -07:00
Altoidnerd
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
Evan Duffield
277ebbe83d v52 bump 2015-09-01 20:57:54 -07:00
Evan Duffield
2fd0cc306d Merge branch 'v0.12.1.x' into v0.12.0.x 2015-09-01 20:56:23 -07:00
evan82
7d8fb85c13 Merge pull request #564 from UdjinM6/v0.12.1.x_fix_ds_leak_inputs
V0.12.1.x DS can (potentially) leak info by number of inputs
2015-09-01 20:53:56 -07:00
evan82
b4d3de4e72 Merge pull request #573 from UdjinM6/v0.12.1.x_fix_sync
V0.12.1.x Fixes for sync:
2015-09-01 20:53:42 -07:00
evan82
982226a5b3 Merge pull request #584 from crowning-/patch-1
Added "Name" to 'mnbudget show' output for easier JSON-parsing
2015-09-01 20:53:28 -07:00
evan82
39c2e40b64 Merge pull request #589 from crowning-/v0.12.1.x
UI: button to toggle lock-state for all inputs in coin-control dialog
2015-09-01 20:53:09 -07:00
evan82
d0c1931c49 Merge pull request #590 from UdjinM6/fix_upnp_hotmn
Fix: local hot MN can't start if upnp is on
2015-09-01 20:52:51 -07:00
evan82
b3d0f8056e Merge pull request #594 from UdjinM6/fix_conflicted_dstx
Fix: dstx stuck sometimes
2015-09-01 20:52:23 -07:00
evan82
33f1d035cd Merge pull request #592 from UdjinM6/more_for_missing
Rpc changes for missing masternodes:
2015-09-01 20:52:11 -07:00
Cory Fields
bfadae3374 travis: for travis generating an extra build 2015-09-01 21:45:23 -04:00
Wladimir J. van der Laan
10c0e52b68
Merge pull request #6548
060058e Enable python tests for Native Windows (ptschip)
2015-09-01 11:37:13 +02:00
UdjinM6
be14946ba8 fix dstx: they were conflicted because of priority 2015-09-01 07:10:24 +03:00
UdjinM6
2b4ec27206 inv messages vectors should not be pushed directly 2015-08-31 10:06:59 -07:00
evan82
1b4ef1d33b Merge pull request #591 from UdjinM6/fix_inv
inv messages vectors should not be pushed directly
2015-08-31 09:39:57 -07:00
Wladimir J. van der Laan
af9305a7e8
Merge pull request #6583
9f3e48e add support for miniupnpc api version 14 (Pavel Vasin)
2015-08-31 17:38:07 +02:00
Wladimir J. van der Laan
f4d88c4041
Merge pull request #6599
9bebf60 Make sure LogPrint strings are line-terminated (J Ross Nicoll)
2015-08-31 11:56:18 +02:00
crowning-
5a8b613a72 UI: button to toggle lock-state (reload CSS fix) 2015-08-31 08:26:20 +02:00
Patrick Strateman
027de94e1f
Use network group instead of CNetAddr in final pass to select node to disconnect 2015-08-30 22:09:14 -07:00
UdjinM6
dcf020a886 Rpc changes for missing masternodes:
- show MN status in `masternode list-conf`, display MISSING if MN was not found in mn list
- do not allow to run `start-missing` and `start-disabled` until mn list is synced
2015-08-31 07:20:38 +03:00
UdjinM6
ef9b90aa09 inv messages vectors should not be pushed directly 2015-08-31 07:05:10 +03:00
UdjinM6
ce6e5cf8b0 fix bug where hot mn can't start if upnp is on 2015-08-31 05:30:03 +03:00
crowning-
aeb9a7d5ea UI: button to toggle lock-state for all inputs in coin-control dialog 2015-08-30 23:40:04 +02:00