Lock zins inside z_sendmany async operation
This commit is contained in:
@@ -119,6 +119,11 @@ AsyncRPCOperation_sendmany::AsyncRPCOperation_sendmany(
|
|||||||
} else {
|
} else {
|
||||||
LogPrint("zrpc", "%s: z_sendmany initialized\n", getId());
|
LogPrint("zrpc", "%s: z_sendmany initialized\n", getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lock UTXOs
|
||||||
|
//lock_utxos();
|
||||||
|
// Lock shielded input notes
|
||||||
|
lock_notes();
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncRPCOperation_sendmany::~AsyncRPCOperation_sendmany() {
|
AsyncRPCOperation_sendmany::~AsyncRPCOperation_sendmany() {
|
||||||
@@ -185,6 +190,9 @@ void AsyncRPCOperation_sendmany::main() {
|
|||||||
s += strprintf(", error=%s)\n", getErrorMessage());
|
s += strprintf(", error=%s)\n", getErrorMessage());
|
||||||
}
|
}
|
||||||
LogPrintf("%s",s);
|
LogPrintf("%s",s);
|
||||||
|
|
||||||
|
//unlock_utxos(); // clean up
|
||||||
|
unlock_notes(); // clean up
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notes:
|
// Notes:
|
||||||
@@ -781,3 +789,41 @@ UniValue AsyncRPCOperation_sendmany::getStatus() const {
|
|||||||
obj.push_back(Pair("params", contextinfo_ ));
|
obj.push_back(Pair("params", contextinfo_ ));
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO: support locking taddr utxo inputs
|
||||||
|
|
||||||
|
// Lock input utxos
|
||||||
|
void AsyncRPCOperation_sendmany::lock_utxos() {
|
||||||
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
for (auto utxo : t_inputs_) {
|
||||||
|
COutPoint outpt(utxo.txid, utxo.vout);
|
||||||
|
pwalletMain->LockCoin(outpt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unlock input utxos
|
||||||
|
void AsyncRPCOperation_sendmany::unlock_utxos() {
|
||||||
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
for (auto utxo : t_inputs_) {
|
||||||
|
COutPoint outpt(utxo.txid, utxo.vout);
|
||||||
|
pwalletMain->UnlockCoin(outpt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Lock input notes
|
||||||
|
void AsyncRPCOperation_sendmany::lock_notes() {
|
||||||
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
for (auto note : z_sapling_inputs_) {
|
||||||
|
pwalletMain->LockNote(note.op);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unlock input notes
|
||||||
|
void AsyncRPCOperation_sendmany::unlock_notes() {
|
||||||
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
for (auto note : z_sapling_inputs_) {
|
||||||
|
pwalletMain->UnlockNote(note.op);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -112,6 +112,11 @@ private:
|
|||||||
bool main_impl();
|
bool main_impl();
|
||||||
|
|
||||||
void sign_send_raw_transaction(UniValue obj); // throws exception if there was an error
|
void sign_send_raw_transaction(UniValue obj); // throws exception if there was an error
|
||||||
|
|
||||||
|
void lock_utxos();
|
||||||
|
void unlock_utxos();
|
||||||
|
void lock_notes();
|
||||||
|
void unlock_notes();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user