aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2015-09-03Fix race condition between starting HTTP server thread and setting EventBase()Wladimir J. van der Laan
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-03Document options for new HTTP/RPC server in --helpWladimir J. van der Laan
2015-09-03Implement RPCTimerHandler for Qt RPC consoleWladimir J. van der Laan
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-03evhttpd implementationWladimir J. van der Laan
- *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-02tests: fix qt payment testCory Fields
Now that boost no longer automatically initializes openssl, we have to do it ourselves.
2015-09-02build: build-system changes for libeventWladimir J. van der Laan
2015-09-02Remove rpc_boostasiotocnetaddr testWladimir J. van der Laan
Dropping all use of boost::asio.
2015-08-31Merge pull request #6583Wladimir J. van der Laan
9f3e48e add support for miniupnpc api version 14 (Pavel Vasin)
2015-08-29Make sure LogPrint strings are line-terminatedJ Ross Nicoll
2015-08-26Merge pull request #6530Wladimir J. van der Laan
c33c11e Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)
2015-08-26Improve addrman Select() performance when buckets are nearly emptyPieter Wuille
2015-08-25net: Set SO_REUSEADDR for Windows tooCory Fields
When running the rpc tests in Wine, nodes often fail to listen on localhost due to a stale socket from a previous run. This aligns the behavior with other platforms.
2015-08-24Merge pull request #6576Wladimir J. van der Laan
e938122 Stop parsing JSON after first finished construct. (Daniel Kraft)
2015-08-23add support for miniupnpc api version 14Pavel Vasin
The value of new arg ttl is set to 2 as it's recommended default.
2015-08-21Merge pull request #6541Wladimir J. van der Laan
e0862c0 Reformat validateaddress help, add missing iswatchonly description. (Pavel Janík)
2015-08-20Merge pull request #6242Wladimir J. van der Laan
17221bf chainparams: don't use std namespace (Cory Fields) f0deec5 chainparams: move CCheckpointData into chainparams.h (Cory Fields)
2015-08-20Merge pull request #6545Wladimir J. van der Laan
8be371d Do not store more than 200 timedata samples. (Pavel Janík)
2015-08-20Merge pull request #6556Wladimir J. van der Laan
1123cdb add unit test for CNetAddr::GetGroup. (Alex Morcos) bba3db1 Fix masking of irrelevant bits in address groups. (Alex Morcos)
2015-08-20Merge pull request #6571Wladimir J. van der Laan
1d1073c consensus: cache the openssl EC_GROUP to avoid a race condition for each CECKey instantiation (Cory Fields)
2015-08-20Stop parsing JSON after first finished construct.Daniel Kraft
Fix https://github.com/bitcoin/bitcoin/issues/6558. In particular, stop parsing JSON after the first object or array is finished. Check that no other garbage follows, and fail the parser if it does.
2015-08-19add unit test for CNetAddr::GetGroup.Alex Morcos
2015-08-19consensus: cache the openssl EC_GROUP to avoid a race condition for each ↵Cory Fields
CECKey instantiation
2015-08-19Merge pull request #6544Wladimir J. van der Laan
c5c1edf Fix spelling mistake in -> if. (Mark Friedenbach) e846b2a Correct a possibly intentional pun that is nevertheless hard to read: "two times of nLockTime." What is meant is that there are two kinds, or categories of nLockTime. (Mark Friedenbach)
2015-08-19Merge pull request #6539Wladimir J. van der Laan
9f68ed6 typofixes (found by misspell_fixer) (Veres Lajos)
2015-08-19Merge pull request #6565Wladimir J. van der Laan
fb08d92 Make sure we re-acquire lock if a task throws (Casey Rodarmor)
2015-08-19Merge pull request #6561Wladimir J. van der Laan
7bd57bb Add limitedmap test (Casey Rodarmor) 8b06894 Disallow unlimited limited maps (Casey Rodarmor) fd2d862 Make limited map actually respect max size (Casey Rodarmor)
2015-08-18Make sure we re-acquire lock if a task throwsCasey Rodarmor
2015-08-18Fix crash when mining with empty keypool.Daniel Kraft
Since the introduction of the ScriptForMining callback, the mining functions (setgenerate and generate) crash with an assertion failure (due to a NULL pointer script returned) if the keypool is empty. Fix this by giving a proper error.
2015-08-17Add limitedmap testCasey Rodarmor
2015-08-17Disallow unlimited limited mapsCasey Rodarmor
2015-08-17Make limited map actually respect max sizeCasey Rodarmor
2015-08-17Merge pull request #6551Wladimir J. van der Laan
243b80d Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)
2015-08-15Merge pull request #6013Jeff Garzik
2015-08-14Fix masking of irrelevant bits in address groups.Alex Morcos
2015-08-14Merge pull request #6415Wladimir J. van der Laan
d042854 SQUASH "Implement watchonly support in fundrawtransaction" (Matt Corallo) 428a898 SQUASH "Add have-pubkey distinction to ISMINE flags" (Matt Corallo) 6bdb474 Implement watchonly support in fundrawtransaction (Matt Corallo) f5813bd Add logic to track pubkeys as watch-only, not just scripts (Matt Corallo) d3354c5 Add have-pubkey distinction to ISMINE flags (Matt Corallo) 5c17059 Update importaddress help to push its use to script-only (Matt Corallo) a1d7df3 Add importpubkey method to import a watch-only pubkey (Matt Corallo) 907a425 Add p2sh option to importaddress to import redeemScripts (Matt Corallo) 983d2d9 Split up importaddress into helper functions (Matt Corallo) cfc3dd3 Also remove pay-2-pubkey from watch when adding a priv key (Matt Corallo)
2015-08-14Implement REST mempool API, add test and documentation.Pavel Janík
2015-08-12Handle leveldb::DestroyDB() errors on wipe failureAdam Weiss
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-08-11Merge pull request #6519Wladimir J. van der Laan
7f1f8f5 Move mempool rejections to new debug category (Wladimir J. van der Laan) 66daed5 Add information to errors in ConnectBlock, CheckBlock (Wladimir J. van der Laan) 6cab808 Remove most logging from transaction validation (Wladimir J. van der Laan) 9003c7c Add function to convert CValidationState to a human-readable message (Wladimir J. van der Laan) dc58258 Introduce REJECT_INTERNAL codes for local AcceptToMempool errors (Wladimir J. van der Laan) fbf44e6 Add debug message to CValidationState for optional extra information (Wladimir J. van der Laan)
2015-08-11Move mempool rejections to new debug categoryWladimir J. van der Laan
Move mempool rejections to debug category `mempoolrej`, to make it possible to show them without enabling the entire category `mempool` which is high volume.
2015-08-11Add information to errors in ConnectBlock, CheckBlockWladimir J. van der Laan
Add detailed state information to the errors, as it is no longer being logged downstream. Also add the state information to mempool rejection debug message in ProcessMessages.
2015-08-11Remove most logging from transaction validationWladimir J. van der Laan
Remove unnecessary direct logging in CheckTransaction, AcceptToMemoryPool, CheckTxInputs, CScriptCheck::operator() All status information should be returned in the CValidationState. Relevant debug information is also added to the CValidationState using the recently introduced debug message. Do keep the "BUG! PLEASE REPORT THIS! ConnectInputs failed against MANDATORY but not STANDARD flags" error as it is meant to appear as bug in the log.
2015-08-11Add function to convert CValidationState to a human-readable messageWladimir J. van der Laan
It is necessary to be able to concisely log a validation state. Convert CValidationState to a human-readable message for logging.
2015-08-11Introduce REJECT_INTERNAL codes for local AcceptToMempool errorsWladimir J. van der Laan
Add status codes specific to AcceptToMempool procession of transactions. These can never happen due to block validation, and must never be sent over the P2P network. Add assertions where appropriate.
2015-08-11Do not store more than 200 timedata samples.Pavel Janík
2015-08-10Fix spelling mistake in -> if.Mark Friedenbach
2015-08-10Correct a possibly intentional pun that is nevertheless hard to read: "two ↵Mark Friedenbach
times of nLockTime." What is meant is that there are two kinds, or categories of nLockTime.
2015-08-10typofixes (found by misspell_fixer)Veres Lajos
2015-08-10Reformat validateaddress help, add missing iswatchonly description.Pavel Janík
2015-08-10Merge pull request #6346Wladimir J. van der Laan
627468d Add support for data-based outputs (OP_RETURN) to bitcoin-tx. (Pavel Janík) d707853 Add OP_RETURN support in createrawtransaction RPC call, add tests. (Pavel Janík)
2015-08-10Merge pull request #6534Wladimir J. van der Laan
9493803 Revert "Revert "Assert on probable deadlocks if the second lock isnt try_lock"" (Cory Fields) 605433f locks: don't lock cs_wallet before making rpc calls (Cory Fields)