Instead of adding BerkeleyEnvironment objects permanently to the g_dbenvs map,
use reference counted shared pointers and remove map entries when the last
BerkeleyEnvironment reference goes out of scope.
This change was requested by Matt Corallo <git@bluematt.me> and makes code that
sets up mock databases cleaner. The mock database environment will now go out
of scope and be reset on destruction so there is no need to call
BerkeleyEnvironment::Reset() during wallet construction to clear out prior
state.
This change does affect bitcoin behavior slightly. On startup, instead of same
wallet environments staying open throughout VerifyWallets() and OpenWallets()
calls, VerifyWallets() will open and close an environment once for each wallet,
and OpenWallets() will create its own environment(s) later.
Github-Pull: #11911
Rebased-From: f1f4bb7
This is a refactoring change that doesn't affect behavior. The motivation
behind the change is give BerkeleyEnvironment objects access to
BerkeleyDatabase objects so it will be possible to simplify the duplicate
wallet check and more reliably avoid opening the same databases twice.
Github-Pull: #14552
Rebased-From: c456fbd
Since the database environment is flushed, closed, and reopened during
EncryptWallet, there is no need to shut down the software anymore.
Github-Pull: #12493
Rebased-From: c1dde3a
Calls ReloadDbEnv after encrypting the wallet so that the database
environment is flushed, closed, and reopened to prevent unencrypted
keys from being saved on disk.
Github-Pull: #12493
Rebased-From: d7637c5
Adds a ReloadDbEnv function to BerkeleyEnvironment in order to close all Db
instances, closes the environment, resets it, and then reopens
the BerkeleyEnvironment.
Also adds a ReloadDbEnv function to BerkeleyDatabase that calls
BerkeleyEnvironment's ReloadDbEnv.
Github-Pull: #12493
Rebased-From: 5d296ac
807add9f5d [0.17] [Doc] Backport release note about PSBT doc (David A. Harding)
Pull request description:
#15314 removes a release note from master for a doc that is backported to 0.17. This adds the note to the 0.17 branch. The only difference in the text is that the `master` in the URL has been changed to `0.17`.
Tree-SHA512: b81af561ad6cf608e3b957d7c50fe6d9b0818cfbd16313599d6dadb4b60e9e3345fef949c4e2ed16cdecfd62201e3e099907f1510e4d16a9f33625163c84c5a2
0cd9ad208c rpc: Make unloadwallet wait for complete wallet unload (João Barbosa)
Pull request description:
#14941 makes `unloadwallet` a synchronous call meaning that it waits for the wallet to fully unload/delete.
Tree-SHA512: df7a490306ee2cca399129a4ebfba4b19b65fe67d1657ec3518352fe453327cb347010f94cf7fe4a60aeb51c928cb9ad6b24c40123fd0b9dc0aab5920a59f48d
c42f4177ce Remove errant past from walletcreatefundedpsbt for nLocktime replaceability (Gregory Sanders)
Pull request description:
Backports #15213 to the 0.17 branch.
Tree-SHA512: f676e0b510b3ae76bf2ae46c7be289837a6d0152972c551ad6a837aab57ec74ee529c309163c8b7e3df446c2f30f148e920702dc31504cc239f99ad4a4607114
59dd855d2d gui: Fix for Incorrect application name when passing -regtest (Ben Carman)
Pull request description:
Changes the application name to `Bitcoin-Qt-regtest` when instead of `Bitcoin-Qt-testnet`
Fixes#15079
Tree-SHA512: 96a8ee5b1906e81f087b3523a59b0d66a9ac0d0cfeb3b48c0762bcac6048c4c17998fc2bf83cff866aacd24f1860c578a2d93baa61e8c2638d265b30f8c2470a
27beb83222 qt: All tray menu actions call showNormalIfMinimized (João Barbosa)
c470bbd19d qt: Use GUIUtil::bringToFront where possible (João Barbosa)
ac73c7d433 qt: Add GUIUtil::bringToFront (João Barbosa)
0c2fb87dc1 Remove obj_c for macOS Dock icon menu (Hennadii Stepanov)
90347141bd Use Qt signal for macOS Dock icon click event (Hennadii Stepanov)
4d4bc37df9 Remove obj_c for macOS Dock icon setting (Hennadii Stepanov)
d2ed162ce0 Clean systray icon menu for -disablewallet mode (Hennadii Stepanov)
298dc15686 gui: Favor macOS show / hide action in dock menu (João Barbosa)
Pull request description:
Backport #14123#14133#14383 and #14597 to 0.17 branch to fix https://github.com/bitcoin/bitcoin/issues/13606#issuecomment-449846983.
Tree-SHA512: 543c80e7e2130870e801e0c9a69b06b9eea27c288478fc5dddeb662f7f3ec5b56b30916e5a9a629fced3fffcb8be77e2cd155e75cfd0a4392299add9730840f4
This moves the Dock icon click reaction code to the common place and
allows some cleanup in obj_c code.
According to the Apple's docs `class_replaceMethod` behaves as
`class_addMethod`, if the method identified by name does not yet exist;
or as `method_setImplementation`, if it does exist.
Github-Pull: #14597
Rebased-From: 2464925e7b
`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).
Github-Pull: #14966
Rebased-From: b74a52192b