Load wallet in monero-wallet-rpc on demand if necessary

Previously, we relied on the wallet in the `monero-wallet-rpc` daemon
to be loaded as we do on startup. As a consequence of this expectation,
restarting `monero-wallet-rpc` to fix bugs like #652 resulted in the
ASB no longer operating correctly.

To fix this, we now load the wallet on-demand in case the daemon responds
with the error code -13.

Ideally, we would implement this behaviour generically using the proxy
pattern on the `MoneroWalletRpc` trait. Unfortunately, when attempting
to do so we uncover a limitation in the design of `jsonrpc_client`.
This limitation is tracked in https://github.com/thomaseizinger/rust-jsonrpc-client/issues/47.
Once fixed, we can implement this logic in a more robust way that is not
tied to the `check_tx_key` RPC call but applies to any RPC call automatically.
This commit is contained in:
Thomas Eizinger 2021-08-20 17:33:59 +10:00
parent c04d2dc944
commit 25b123d6ed
No known key found for this signature in database
GPG key ID: 651AC83A6C6C8B96
3 changed files with 236 additions and 83 deletions

View file

@ -14,3 +14,5 @@
pub mod monerod;
pub mod wallet;
pub use jsonrpc_client as jsonrpc;