BTC event handler synchronized

Sync object (mutex) added to sidechain_net_handler_bitcoin::handle_event
This commit is contained in:
moss9001 2021-11-26 19:22:48 +02:00
parent 9cc4557e8a
commit 25866711ca
2 changed files with 11 additions and 4 deletions

View file

@ -7,6 +7,8 @@
#include <boost/signals2.hpp>
#include <mutex>
#include <fc/network/http/connection.hpp>
#include <graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp>
@ -114,6 +116,9 @@ private:
fc::future<void> on_changed_objects_task;
bitcoin::bitcoin_address::network network_type;
std::mutex event_handler_mutex;
typedef std::lock_guard<decltype(event_handler_mutex)> scoped_lock;
std::string create_primary_wallet_address(const std::vector<son_info> &son_pubkeys);
std::string create_primary_wallet_transaction(const son_wallet_object &prev_swo, std::string new_sw_address);

View file

@ -1801,10 +1801,12 @@ std::string sidechain_net_handler_bitcoin::send_transaction(const sidechain_tran
void sidechain_net_handler_bitcoin::handle_event(const std::string &event_data) {
std::string block = bitcoin_client->getblock(event_data);
if (block != "") {
const auto &vins = extract_info_from_block(block);
if (block.empty())
return;
const auto &sidechain_addresses_idx = database.get_index_type<sidechain_address_index>().indices().get<by_sidechain_and_deposit_address_and_expires>();
auto vins = extract_info_from_block(block);
scoped_lock interlock(event_handler_mutex);
const auto & sidechain_addresses_idx = database.get_index_type<sidechain_address_index>().indices().get<by_sidechain_and_deposit_address_and_expires>();
for (const auto &v : vins) {
// !!! EXTRACT DEPOSIT ADDRESS FROM SIDECHAIN ADDRESS OBJECT
@ -1833,7 +1835,7 @@ void sidechain_net_handler_bitcoin::handle_event(const std::string &event_data)
sed.peerplays_asset = asset(sed.sidechain_amount * btc_price.base.amount / btc_price.quote.amount);
sidechain_event_data_received(sed);
}
}
}
std::string sidechain_net_handler_bitcoin::get_redeemscript_for_userdeposit(const std::string &user_address) {