Tree:
a8ce872118
0.10
0.13
0.14
0.15
0.16
0.16.3-insta
0.8
add-dnsseed-keva-one
add-kex-keva-one-dns
cn
cn_merge
cn_mining
fix-qt-dpi-warning
idb-fix
inlude-qpainterpath
issue_19
jw-dev
keva-gui
kevaview
kvazar
main
master
mz_test
rx
update-boost-1-74
validate-key-value-lenght
views
wsl
zmq
0.16.6.0-rc1
0.8.3.7-cc
kvazar-1.0.0
kvazar-1.0.1
kvazar-1.1.0
kvazar-1.1.1
v0.1.5
v0.1.6test1
v0.10-mark12
v0.10.0
v0.10.0.2
v0.10.0rc1
v0.10.0rc2
v0.10.0rc3
v0.10.0rc4
v0.10.1
v0.10.1.1
v0.10.1.2
v0.10.1.2-osxsign3
v0.10.1.3
v0.10.1rc1
v0.10.1rc2
v0.10.1rc3
v0.10.2
v0.10.2.1
v0.10.2.2
v0.10.2rc1
v0.10.3.0rc1
v0.10.3rc1
v0.10.4.0
v0.10.4.0rc1
v0.13.2
v0.13.2.1
v0.13.2rc1
v0.13.2rc2
v0.13.2rc3
v0.13.3
v0.13.3rc1
v0.13.3rc2
v0.14.2
v0.14.2rc1
v0.14.2rc2
v0.15.0.1rc1
v0.15.1
v0.15.1rc1
v0.16.0
v0.16.0rc1
v0.16.2
v0.16.2rc1
v0.16.3
v0.16.3-rc1
v0.16.3-rc2
v0.16.3-rc3
v0.16.3-rc7
v0.16.3-rc8
v0.16.3.1
v0.16.4
v0.16.5
v0.16.5.1
v0.16.5.2
v0.16.5.3
v0.16.6.0
v0.16.7.0
v0.16.8.0
v0.2.0
v0.2.10
v0.2.11
v0.2.12
v0.2.13
v0.2.2
v0.2.4
v0.2.5
v0.2.6
v0.2.7
v0.2.8
v0.2.9
v0.2rc2
v0.3.0
v0.3.1
v0.3.10
v0.3.11_notexact
v0.3.12
v0.3.13
v0.3.14
v0.3.15
v0.3.17
v0.3.18
v0.3.19
v0.3.1rc1
v0.3.2
v0.3.20
v0.3.20.01_closest
v0.3.20.2_closest
v0.3.21
v0.3.21rc
v0.3.22
v0.3.22rc1
v0.3.22rc2
v0.3.22rc3
v0.3.22rc4
v0.3.22rc5
v0.3.22rc6
v0.3.23
v0.3.23rc1
v0.3.24
v0.3.24rc1
v0.3.24rc2
v0.3.24rc3
v0.3.3
v0.3.6
v0.3.7
v0.3.8
v0.3rc1
v0.3rc2
v0.3rc4
v0.4.0
v0.4.00rc1
v0.4.00rc2
v0.5.0
v0.5.0rc1
v0.5.0rc2
v0.5.0rc3
v0.5.0rc4
v0.5.0rc5
v0.5.0rc6
v0.5.0rc7
v0.5.1
v0.5.1rc1
v0.5.1rc2
v0.5.2
v0.5.3
v0.5.3rc4
v0.6.0
v0.6.0rc1
v0.6.0rc2
v0.6.0rc3
v0.6.0rc4
v0.6.0rc5
v0.6.0rc6
v0.6.1
v0.6.1rc1
v0.6.1rc2
v0.6.2
v0.6.2.1
v0.6.2.2
v0.6.3
v0.6.3a
v0.6.3b
v0.6.3c
v0.6.3rc1
v0.6.9
v0.6.9.1
v0.6.9.2
v0.7.0
v0.7.0rc1
v0.7.0rc2
v0.7.0rc3
v0.7.1
v0.7.1rc1
v0.7.2
v0.7.2rc2
v0.8.0
v0.8.0rc1
v0.8.1
v0.8.2
v0.8.2.3
v0.8.2rc1
v0.8.2rc2
v0.8.2rc3
v0.8.3
v0.8.3.1
v0.8.3.2
v0.8.3.3
v0.8.3.4
v0.8.3.5
v0.8.3.6
v0.8.3.7
v0.8.3.7-cc
v0.8.3.7-ccsec
v0.8.4
v0.8.4.1
v0.8.4.1-cc
v0.8.4.1-ccsec
v0.8.4.1-omg1
v0.8.4.1-sse2test
v0.8.4rc1
v0.8.4rc2
v0.8.5
v0.8.5-nodebloom
v0.8.5.1
v0.8.5.1-macosx
v0.8.5.1-omg1
v0.8.5.1-omg2
v0.8.5.1-omgscrypt
v0.8.5.2-rc1
v0.8.5.2-rc2
v0.8.5.2-rc3
v0.8.5.2-rc4
v0.8.5.2-rc4-detect
v0.8.5.2-rc5
v0.8.5.2-rc6
v0.8.5.2rc1
v0.8.5.3-rc1
v0.8.5.3-rc2
v0.8.5.3-rc3
v0.8.5.3-rc4
v0.8.5.3-rc4-no-mmap
v0.8.5.3-rc5
v0.8.5.3-rc6
v0.8.5.3-rc7
v0.8.5.3-rc8
v0.8.6.1
v0.8.6.2
v0.8.6.3-mark2
v0.8.6.9
v0.8.7.1
v0.8.7.2
v0.8.7.3
v0.8.7.4
v0.8.7.5
v0.9.0rc1
v0.9.0rc2
v0.9.2
v0.9.2.1
v0.9.2rc1
v0.9.2rc2
v0.9.3
v0.9.3-preview4
v0.9.3-preview5
v0.9.3rc1
v0.9.3rc2
v0.9.4
${ noResults }
6 Commits (a8ce872118c4807465629aecb9e4f3d72d999ccb)
Author | SHA1 | Message | Date |
---|---|---|---|
Wladimir J. van der Laan |
a264c32e33
|
http: speed up shutdown
This continues/fixes #6719. `event_base_loopbreak` was not doing what I expected it to, at least in libevent 2.0.21. What I expected was that it sets a timeout, given that no other pending events it would exit in N seconds. However, what it does was delay the event loop exit with 10 seconds, even if nothing is pending. Solve it in a different way: give the event loop thread time to exit out of itself, and if it doesn't, send loopbreak. This speeds up the RPC tests a lot, each exit incurred a 10 second overhead, with this change there should be no shutdown overhead in the common case and up to two seconds if the event loop is blocking. As a bonus this breaks dependency on boost::thread_group, as the HTTP server minds its own offspring. |
9 years ago |
Wladimir J. van der Laan | 2190ea6c4e |
rpc: Split option -rpctimeout into -rpcservertimeout and -rpcclienttimeout
The two timeouts for the server and client, are essentially different: - In the case of the server it should be a lower value to avoid clients clogging up connection slots - In the case of the client it should be a high value to accomedate slow responses from the server, for example for slow queries or when the lock is contended Split the options into `-rpcservertimeout` and `-rpcclienttimeout` with respective defaults of 30 and 900. |
9 years ago |
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. |
9 years ago |
Wladimir J. van der Laan | 6d2bc22146 |
Document options for new HTTP/RPC server in --help
|
9 years ago |
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. |
9 years ago |
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 |
9 years ago |