aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-01-16Integrate util/system's CInit into RNGStatePieter Wuille
This guarantees that OpenSSL is initialized properly whenever randomness is used, even when that randomness is invoked from global constructors. Note that this patch uses Mutex directly, rather than CCriticalSection. This is because the lock-detection code is not necessarily initialized during global constructors.
2019-01-16Abstract out seeding/extracting entropy into RNGState::MixExtractPieter Wuille
2019-01-16Add thread safety annotations to RNG statePieter Wuille
2019-01-16Rename some hardware RNG related functionsPieter Wuille
2019-01-16Automatically initialize RNG on first use.Pieter Wuille
2019-01-16Don't log RandAddSeedPerfmon detailsPieter Wuille
These are hard to deal with, as in a follow-up this function can get called before the logging infrastructure is initialized.
2019-01-13Use FRC::randbytes instead of reading >32 bytes from RNGPieter Wuille
There was only one place in the codebase where we're directly reading >32 bytes from the RNG. One possibility would be to make the built-in RNG support large reads, but using FastRandomContext lets us reuse code better. There is no change in behavior here, because the FastRandomContext constructor uses GetRandBytes internally.
2019-01-03Merge #14375: qt: Correct misleading "overridden options" labelWladimir J. van der Laan
75143612546450c064ccd8dcf1f7f6e79f397802 Correct misleading "overridden options" label (Hennadii Stepanov) Pull request description: Refs: #3867, #8165. Tree-SHA512: da3b13a0560654053aeff22a15031ae59a3136abc941f3959440c2d250add7de7ca837c96d721eed69b2cac21d340e1895a186f69383ab82a41fc1e0ee789e5c
2019-01-02Merge #15000: qt: Fix broken notificator on GNOMEMarcoFalke
c8d9d9093b Fix broken notificator on GNOME (Hennadii Stepanov) Pull request description: Fix #14994; that bug was introduced in #14228 (that was my fault). ~Also this commit explicit separates~ There are two functions of the tray icon: - a system tray widget (`QSystemTrayIcon::isSystemTrayAvailable() == true`) - a high-level notificator via balloon messages (`QSystemTrayIcon::supportsMessages() == true`) ~These properties are mutually independent,~ e.g., on Fedora 29 + GNOME: ``` QSystemTrayIcon::isSystemTrayAvailable() == false; QSystemTrayIcon::supportsMessages() == true; ``` UPDATE: `supportsMessages()` makes no sense without `isSystemTrayAvailable()`: `QSystemTrayIcon::showMessage()` just not working on Fedora 29 + GNOME. Tree-SHA512: 3e75ed2dfcef112bd64b8c329227ae68ba57f3be55769629f4eb3b1c52ef1f33db635f00bb5fd57c25f73a692971d6a847ea14c525f41c594fddde6e970a8ad8
2019-01-02Merge #14336: net: implement pollWladimir J. van der Laan
4927bf2f257ac53569978980eaf1f61c2c6b04cc Increase maxconnections limit when using poll. (Patrick Strateman) 11cc491a288a73e911be24a285e12abd57df7d04 Implement poll() on systems which support it properly. (Patrick Strateman) 28211a4bc9c65859b641b81a0541726a0e01988f Move SocketEvents logic to private method. (Patrick Strateman) 7e403c0ae705455aa66f7df9a9a99f462fd4e9a8 Move GenerateSelectSet logic to private method. (Patrick Strateman) 1e6afd0dbc1c581435588e1e9bb419a035b81028 Introduce and use constant SELECT_TIMEOUT_MILLISECONDS. (Patrick Strateman) Pull request description: Implement poll() on systems which support it properly. This eliminates the restriction on maximum socket descriptor number. Tree-SHA512: b945cd9294afdafcce96d547f67679d5cdd684cf257904a239cd1248de3b5e093b8d6d28d8d1b7cc923dc0b2b5723faef9bc9bf118a9ce1bdcf357c2323f5573
2018-12-31Merge #15054: Update copyright headers to 2018MarcoFalke
1a49a0e310 Bump manpages (DrahtBot) 06ba77973e Update copyright headers to 2018 (DrahtBot) Pull request description: * `./contrib/devtools/copyright_header.py update ./` * `./contrib/devtools/gen-manpages.sh` Tree-SHA512: ca0dc5e97f4c33814d4ccd17769bbf2d23a99a71d62534fe1064fedfe47de3b5c30caf9b6deb0d70bf125e08c7ae6335ac4fcded918049d6b63b13b319d798e3
2018-12-29Merge #13743: refactor: Replace boost::bind with std::bindMarcoFalke
cb53b825c2 scripted-diff: Replace boost::bind with std::bind (Chun Kuan Lee) 2196c51821 refactor: Use boost::scoped_connection in signal/slot, also prefer range-based loop instead of std::transform (Chun Kuan Lee) Pull request description: Replace boost::bind with std::bind - In `src/rpc/server.cpp`, replace `std::transform` with simple loop. - In `src/validation.cpp`, store the `boost::signals2::connection` object and use it to disconnect. - In `src/validationinterface.cpp`, use 2 map to store the `boost::signals2::scoped_connection` object. Tree-SHA512: 6653cbe00036fecfc495340618efcba6d7be0227c752b37b81a27184433330f817e8de9257774e9b35828026cb55f11ee7f17d6c388aebe22c4a3df13b5092f0
2018-12-29Update copyright headers to 2018DrahtBot
2018-12-29Merge #14966: docs: fix testmempoolaccept CLI syntaxMarcoFalke
b74a52192b fix testmempoolaccept CLI syntax (1Il1) Pull request description: `testmempoolaccept "hexstring"` will give a "JSON parse error". The correct syntax is `testmempoolaccept \[\"hexstring\"\]` (but seems escaping is not displayed in other areas so leaving backspaces out). Tree-SHA512: ad755147d6db0bd3f2d8481517dab29df755a32b28a3bdb4553b1fddd1940850450d1e9a6c3bd04e4e3faa7bc09aadfd3412b4cd65e61d61ea34452831597967
2018-12-28Merge #14981: rpc: Clarifying RPC getrawtransaction's time help textMarcoFalke
84104c781a clarifying getrawtransaction[time] get help text (Ben Carman) Pull request description: #12339 The `time` and `blocktime` entries have the same value so they should have the same help text as well Tree-SHA512: 1e9a94678eec8501c761f16bf3d8e269d68620596d1fdd31a32989a1b53be5a8097ece8bfabe99979e658dec82237e37d8194ae2acd7c1deef7501ee701667fb
2018-12-24Merge #14565: Overhaul importmulti logicMeshCollider
eacff95de Add release notes (Pieter Wuille) bdacbda25 Overhaul importmulti logic (Pieter Wuille) Pull request description: This is an alternative to #14558 (it will warn when fields are being ignored). In addition: * It makes sure no changes to the wallet are made when an error in the input exists. * It validates all arguments, and will fail if anything fails to parse. * Adds a whole bunch of sanity checks Tree-SHA512: fdee0b6aca8c643663f0bc295a7c1d69c1960951493b06abf32c58977f3e565f75918dbd0402dde36e508dc746c9310a968a0ebbacccc385a57ac2a68b49c1d0
2018-12-22Merge #13930: doc: Better explain GetAncestor check for m_failed_blocks in ↵MarcoFalke
AcceptBlockHeader 66e15e8f97 Explain GetAncestor check for m_failed_blocks in AcceptBlockHeader (Sjors Provoost) Pull request description: Salvaged (but slightly modified) from #12138, the comment there was really helpful to wrap my head around that part of the code. In addition, a naive reader like yours truly will first think `IsValid(BLOCK_VALID_SCRIPTS)` means the previous block was invalid. But IIUC that's not what it means. Instead, it means the block hasn't been checked for validity at the `BLOCK_VALID_SCRIPTS` level yet. So in that case the existing text "previous block index isn't valid" is wrong. Tree-SHA512: 442a319a83290d94697fdf51376463b70454e0f3909d4a45594ddc2e7c26cd19dc703808385a25e26d6d2dddab0aa35ca41722f2e65ee6fe57bbaf62652d3ec8
2018-12-22Merge #13128: policy: Add Clang thread safety annotations for variables ↵MarcoFalke
guarded by cs_feeEstimator dae1423e5a Add locking annotations to feeStats, shortStats and longStats (practicalswift) 764e42fee2 scripted-diff: Rename from cs_feeEstimator to m_cs_fee_estimator (practicalswift) 9a789d4dc6 policy: Add Clang thread safety annotations for variables guarded by cs_feeEstimator (practicalswift) Pull request description: * Add Clang thread safety annotations for variables guarded by `cs_feeEstimator` * ~~Add missing `cs_feeEstimator` locks~~ Tree-SHA512: 24b1d876ad53524ee8989b9658ac1a1b2766ebb3b27a1f84601d207e74d090e33738b814afac2a1f5bcd37565abcb361c6e5adae212840ff1ca32c3c42953391
2018-12-22Merge #14172: Refactor and add tests for BlockFilter constructionMarcoFalke
e4ed8ce2c8 blockfilter: Remove default clause in switch statement. (Jim Posen) c30620983d blockfilter: Additional constructors for BlockFilter. (Jim Posen) 20b812993a blockfilter: Refactor GCS params into struct. (Jim Posen) Pull request description: These commits have been split out of #14121 because they are fairly independent and that PR is very large. Tree-SHA512: b9643b159e114df50a295f433e807afe6082db55a2a3a17401c1509b850c71bf5011ab3638863b46663709726be4445be6fde1dec514aec7696135497a9f0183
2018-12-21blockfilter: Remove default clause in switch statement.Jim Posen
Now the compiler will warn if not all enums are handled in the switch.
2018-12-21Merge #14811: Mining: Enforce that segwit option must be set in GBTMarcoFalke
d2ce315fbf [docs] add release note for change to GBT (John Newbery) 0025c9eae4 [mining] segwit option must be set in GBT (John Newbery) Pull request description: Calling getblocktemplate without the segwit rule specified is most likely a client error, since it results in lower fees for the miner. Prevent this client error by failing getblocktemplate if called without the segwit rule specified. Of the previous 1000 blocks (measured at block [551591 (hash 0x...173c811)](https://blockstream.info/block/000000000000000000173c811e79858808abc3216af607035973f002bef60a7a)), 991 included segwit transactions. Tree-SHA512: 7933b073d72683c9ab9318db46a085ec19a56a14937945c73f783ac7656887619a86b74db0bdfcb8121df44f63a1d6a6fb19e98505b2a26a6a8a6e768e442fee
2018-12-21Merge #14653: rpcwallet: Add missing transaction categories to rpc helptextsMarcoFalke
f3f6dde56e Test coinbase category in wallet rpcs (andrewtoth) e982f0b682 Add all category options to wallet rpc help (andrewtoth) Pull request description: The current helptext for `listtransactions`, `listsinceblock` and `gettransaction` only list two of the five possible options for `category`. This incorrectly implies that these are the only two options, and can cause problems if the other three options aren't accounted for. Also, some of the documentation is incorrect when specifying which options are returned for which categories. This PR updates the helptext for these RPCs and adds a functional regression test for the cases when the other three categories are returned. Tree-SHA512: 67dd7ff6269a3b0f17f5d1a61b0ae1fb1f3778f05e1c440bfbb9b3a005c9c6d740abcace20f3d597cf2bd6779c494448690f13fab0bd2340f206213bc7890b51
2018-12-19Fix broken notificator on GNOMEHennadii Stepanov
That bug was introduced in #14228.
2018-12-19Merge #14993: rpc: Fix data race (UB) in InterruptRPC()Wladimir J. van der Laan
6c10037f72073eecc674c313580ef50a4f1e1e44 rpc: Fix data race (UB) in InterruptRPC() (practicalswift) Pull request description: Fix data race (UB) in `InterruptRPC()`. Before: ``` $ ./configure --with-sanitizers=thread $ make $ test/functional/test_runner.py feature_shutdown.py … SUMMARY: ThreadSanitizer: data race rpc/server.cpp:314 in InterruptRPC() … ALL | ✖ Failed | 2 s (accumulated) ``` After: ``` $ ./configure --with-sanitizers=thread $ make $ test/functional/test_runner.py feature_shutdown.py … ALL | ✓ Passed | 3 s (accumulated) ``` Tree-SHA512: b139ca1a0480258f8caa7730cabd7783a821d906630f51487750a6b15b7842675ed679747e1ff1bdade77d248807e9d77bae7bb88da54d1df84a179cd9b9b987
2018-12-19Merge #14875: RPCHelpMan: Support required arguments after optional onesMarcoFalke
fa9a5bc1a0 RPCHelpMan: Support required arguments after optional ones (MarcoFalke) Pull request description: There was a requirement that required arguments could not be positioned after an optional argument, but the deprecation of priority made the second argument to `prioritisetransaction` optional. So support that in `RPCHelpMan`. Also format all named arguments in the same way (without the wrapping `"` even for strings), since the extended description already mentions the type and it feels odd to special case strings. Tree-SHA512: c125145afb4a63abc995aaf0a89489efc0f470a720727a1ca6ee0bfd2bcbc59e87c38128dd1e0cdf03dbb5b18e84867887c3dabf6ec8378e66cb1f4cecb9e407
2018-12-19Merge #14985: test: Remove thread_local from test_bitcoinMarcoFalke
fa61202cae test: Add comment to g_insecure_rand_ctx (MarcoFalke) fa0d3c4407 test: Undo thread_local g_insecure_rand_ctx (MarcoFalke) Pull request description: `thread_local` seems to be highly controversial according to the discussion in #14953, so remove it again from the tests. Also remove boost::thread_group in the test that uses it, since I am touching it anyway. Tree-SHA512: 977c1f597e3cfbd0e97d0b037d998fdbc701f62e9a2f57e02dbe1727b63ae8ff478dbd9d3d6dc4ffdfa23f2058b331f04949d51f23a8f55b41ecb75f088f1cbe
2018-12-18rpc: Fix data race (UB) in InterruptRPC()practicalswift
2018-12-17Merge #14975: qt: Refactoring with QString::toNSString()Jonas Schnelli
4d454dcb6 Refactoring with QString::toNSString (Hennadii Stepanov) Pull request description: This PR makes `MacNotificationHandler::showNotification()` cleaner and more readable. The used `QString::toNSString()` function was introduced in Qt 5.2 which is minimum version now (#14725). The behavior of `MacNotificationHandler::showNotification()` has not been changed. cc: @jonasschnelli Tree-SHA512: 940327a77746ee016415efd3b696ad8ec85dcf12bf3f62e55c9bdc1700415d81a8d03fbc79310982d37a4098786dcaef7cd9702db5498d59d8065447babc27f5
2018-12-18Merge #14957: wallet: Initialize stop_block in ↵MeshCollider
CWallet::ScanForWalletTransactions 8b9171ccf wallet: Initialize stop_block to nullptr in CWallet::ScanForWalletTransactions (Ben Woosley) Pull request description: Previously the argument would be untouched if the first block scan failed. This makes the behavior predictable, and consistent with the documentation. Tree-SHA512: 3efadf9fd5e25ecd9450f32545f58e61a123ad883e921ef427b13e4782ffdd8ffe905c9ad3edc7e8f9e4953342cd72247bb4cc9eeaf9e5fd04291ac5c1bb5eec
2018-12-17wallet: Initialize stop_block to nullptr in CWallet::ScanForWalletTransactionsBen Woosley
Previously the argument would be untouched if the first block scan failed. This makes the behavior predictable, and consistent with the documentation.
2018-12-17test: Add comment to g_insecure_rand_ctxMarcoFalke
2018-12-17clarifying getrawtransaction[time] get help textBen Carman
2018-12-17test: Undo thread_local g_insecure_rand_ctxMarcoFalke
2018-12-16[Qt] Restore < Qt5.6 compatibility for addActionJonas Schnelli
2018-12-16Refactoring with QString::toNSStringHennadii Stepanov
The behavior of MacNotificationHandler::showNotification() has not been changed.
2018-12-16Merge #14969: tests: Fix cuckoocache_tests TSAN failure introduced in 14935.Wladimir J. van der Laan
d98a29ec408590e54f405a7f8d232cd9dc5b14da Fix cuckoocache_tests TSAN failure introduced in #14935. Fixes #14967. (practicalswift) Pull request description: Fix cuckoocache_tests TSAN failure introduced in #14935. Fixes #14967. Tree-SHA512: aabbfa3ab41d9f498151a9b50a2a875fd51ed609bb54d89292114f59392aae57c85fdd5b7a04b589fbf598aaf736b425a6f62b12c806a1fa23bdd45d2d2accfb
2018-12-15Merge #14573: qt: Add Window menuJonas Schnelli
95a5a9fcc qt: Remove ellipsis from sending/receiving addresses (João Barbosa) a96c0df35 qt: Add Window menu (João Barbosa) 9ea38d022 qt: Allow to inspect RPCConsole tabs (João Barbosa) Pull request description: Overall this PR does the following: - add top level menu Window - add Minimize and Zoom actions to Window menu - move Sending/Receiving address to Window - remove Help->Debug window - add one menu entry for each debug window tab This removes the access to address book from the File menu. With wallet support: <img width="522" alt="screenshot 2018-12-11 at 00 33 05" src="https://user-images.githubusercontent.com/3534524/49770451-5bec0800-fcdc-11e8-91d6-f8f850ead92d.png"> Without wallet support: <img width="593" alt="screenshot 2018-12-11 at 12 55 21" src="https://user-images.githubusercontent.com/3534524/49802183-19f6ac80-fd44-11e8-9973-36fcfb4f129e.png"> Tree-SHA512: 4fb03702efe18df7bae33950e462940162abe634c55d0214b8920812127b763234cc9b73f27b3702502a37b6d49bdd6c50b7c8d9a3daea75cecb0136556dd1ea
2018-12-15Fix cuckoocache_tests TSAN failure introduced in #14935. Fixes #14967.practicalswift
2018-12-15fix testmempoolaccept CLI syntax1Il1
`testmempoolaccept "hexstring"` will give a "JSON parse error". The correct syntax is `testmempoolaccept \[\"hexstring\"\]` (but seems escaping is not displayed in other areas so leaving backspaces out).
2018-12-14Merge #14935: tests: Test for expected return values when calling functions ↵MarcoFalke
returning a success code c84c2b8c92 tests: Test for expected return values when calling functions returning a success code (practicalswift) Pull request description: Test for expected return values when calling functions returning a success code (instead of discarding the return values). **Note to reviewers:** The following commands can be used to verify that the only text fragments added in this PR are `BOOST_CHECK(`, `!` and `)` : ``` $ git diff HEAD~1 | grep -E '^[\-][^\-]' | cut -b2- > before.txt $ git diff HEAD~1 | grep -E '^[\+][^\+]' | cut -b2- > after.txt $ cat after.txt | sed 's/BOOST_CHECK(//g' | sed 's/));/);/g' | tr -d '!' > after-sed.txt $ diff -u before.txt after-sed.txt $ ``` Tree-SHA512: ff0863ef2046a2eda3c44e9c6b9aedfe167881f2fa58db29fef859416831233ef6502a3a11fd2322bc1a924db83df8d4a5c5879298007f2a7b085e2a7286af70
2018-12-14Merge #14821: Replace CAffectedKeysVisitor with descriptor based logicMeshCollider
0e75f44a0 Replace CAffectedKeysVisitor with descriptor based logic (Pieter Wuille) Pull request description: It seems we don't need a custom visitor pattern anymore to find what keys are affected by a script. Instead, infer the descriptor, and see which keys it expands to. Tree-SHA512: 8a52f61fb74e8ebfd8d02e759629e423ced6bd7d9a9ee7c4bdd2cca8465bc27b951cc69c8d835244a611ba55c6d22f83b81acef05487cb988c88c0951b797699
2018-12-13test: Make g_insecure_rand_ctx thread_localMarcoFalke
2018-12-13Merge #14834: validation: assert that pindexPrev is non-null when requiredWladimir J. van der Laan
fbaaf782cea54dc433e72129ee1088b3169cdfd4 validation: assert that pindexPrev is non-null when required (Karl-Johan Alm) Pull request description: In `ContextualCheckBlock`, we are checking if `pindexPrev == nullptr` conditionally at the start, but then assume it is non-`null` later. This removes the latter assumption. Tree-SHA512: 95f1e9dc839b2cc0e099d155e6180634ece8c6760d00b53e7d27128762e64c92e82d98a5f4a5786b48a4851b17cdbb4b667d3b6a99adb651256e2032de67d05c
2018-12-13Merge #14940: test: Add test for truncated pushdata scriptWladimir J. van der Laan
fa694f706c37a1c512a7c346591a63c5e09ee239 test: Add tests for truncated scripts (MarcoFalke) Pull request description: Previously not covered by any test Tree-SHA512: 9f99659bdf3947271074938456a2fe64f5b39fc868e9aa474cec199a536ae5d7428f1cfa7f361936b71b09ee4c426261e6b25668fa77b8416b30dbe4ddb357f0
2018-12-13Merge #14624: Some simple improvements to the RNG codeWladimir J. van der Laan
e414486d56b9f06af7aeb07ce13e3c3780c2b69b Do not permit copying FastRandomContexts (Pieter Wuille) 022cf47dd7ef8f46e32a184e84f94d1e9f3a495c Simplify testing RNG code (Pieter Wuille) fd3e7973ffaaa15ed32e5aeadcb02956849b8fc7 Make unit tests use the insecure_rand_ctx exclusively (Pieter Wuille) 8d98d426116f0178612f14d1874d331042c4c4b7 Bugfix: randbytes should seed when needed (non reachable issue) (Pieter Wuille) 273d02580aa736b7ccea8fce51d90541665fdbd1 Use a FastRandomContext in LimitOrphanTxSize (Pieter Wuille) 3db746beb407f7cdd9cd6a605a195bef1254b4c0 Introduce a Shuffle for FastRandomContext and use it in wallet and coinselection (Pieter Wuille) 8098379be5465f598220e1d6174fc57c56f9da42 Use a local FastRandomContext in a few more places in net (Pieter Wuille) 9695f31d7544778853aa373f0aeed629fa68d85e Make addrman use its local RNG exclusively (Pieter Wuille) Pull request description: This improves a few minor issues with the RNG code: * Avoid calling `GetRand*()` functions (which currently invoke OpenSSL, later may switch to using our own RNG pool) inside loops in addrman, networking code, `KnapsackSolver`, and `LimitOrphanSize` * Fix a currently unreachable bug in `FastRandomContext::randbytes`. * Make a number of simplifications to the unit tests' randomness code (some tests unnecessarily used their own RNG or the OpenSSL one, instead of using the unit test specific `insecure_rand_ctx`). * As a precaution, make it illegal to copy a `FastRandomContext`. Tree-SHA512: 084c70b533ea68ca7adc0186c39f0b3e0a5c0ae43a12c37286e5d42086e056a8cd026dde61b12c0a296dc80f87fdc87fe303b9e8e6161b460ac2086cf7615f9d
2018-12-13Merge #14741: doc: Indicate -rpcauth option password hashing algWladimir J. van der Laan
dcb70b152292a8df9fe834bacdf231ea848819b1 Indicate -rpcauth option password hashing alg (Carl Dong) Pull request description: By indicating the password hashing algorithm, users of bitcoin distributions without the script in `share/rpcauth` and users who don't want to rely on said script can use alternative means to generate the password hash. Question for reviewers: perhaps we should also indicate that it is specifically a HMAC-SHA-256 of the _**UTF-8**_ encoding of their password? Tree-SHA512: 86b546c2e78699fa253da0c1e76b21ef60e9b6a5778826ac5136e764d70e3213044cc05cdb4786ba27968781647c46e358a823bbc2db7d45d041d291ee03b83c
2018-12-13tests: Test for expected return values when calling functions returning a ↵practicalswift
success code
2018-12-12Overhaul importmulti logicPieter Wuille
This introduces various changes to the importmulti logic: * Instead of processing input and importing things at the same time, first process all input data and verify it, so no changes are made in case of an error. * Verify that no superfluous information is provided (no keys or scripts that don't contribute to solvability in particular). * Add way more sanity checks, by means of descending into all involved scripts.
2018-12-12Do not permit copying FastRandomContextsPieter Wuille
2018-12-12Simplify testing RNG codePieter Wuille