mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-12-23 02:18:52 +00:00
Merge pull request #6913
fc2f971
wallet2: wait for propagation timeout before marking tx as failed (xiphon)
This commit is contained in:
commit
4c2e77854d
@ -2961,6 +2961,8 @@ void wallet2::update_pool_state(std::vector<std::tuple<cryptonote::transaction,
|
|||||||
MTRACE("update_pool_state got pool");
|
MTRACE("update_pool_state got pool");
|
||||||
|
|
||||||
// remove any pending tx that's not in the pool
|
// remove any pending tx that's not in the pool
|
||||||
|
constexpr const std::chrono::seconds tx_propagation_timeout{CRYPTONOTE_DANDELIONPP_EMBARGO_AVERAGE * 3 / 2};
|
||||||
|
const auto now = std::chrono::system_clock::now();
|
||||||
std::unordered_map<crypto::hash, wallet2::unconfirmed_transfer_details>::iterator it = m_unconfirmed_txs.begin();
|
std::unordered_map<crypto::hash, wallet2::unconfirmed_transfer_details>::iterator it = m_unconfirmed_txs.begin();
|
||||||
while (it != m_unconfirmed_txs.end())
|
while (it != m_unconfirmed_txs.end())
|
||||||
{
|
{
|
||||||
@ -2988,9 +2990,11 @@ void wallet2::update_pool_state(std::vector<std::tuple<cryptonote::transaction,
|
|||||||
LOG_PRINT_L1("Pending txid " << txid << " not in pool, marking as not in pool");
|
LOG_PRINT_L1("Pending txid " << txid << " not in pool, marking as not in pool");
|
||||||
pit->second.m_state = wallet2::unconfirmed_transfer_details::pending_not_in_pool;
|
pit->second.m_state = wallet2::unconfirmed_transfer_details::pending_not_in_pool;
|
||||||
}
|
}
|
||||||
else if (pit->second.m_state == wallet2::unconfirmed_transfer_details::pending_not_in_pool && refreshed)
|
else if (pit->second.m_state == wallet2::unconfirmed_transfer_details::pending_not_in_pool && refreshed &&
|
||||||
|
now > std::chrono::system_clock::from_time_t(pit->second.m_sent_time) + tx_propagation_timeout)
|
||||||
{
|
{
|
||||||
LOG_PRINT_L1("Pending txid " << txid << " not in pool, marking as failed");
|
LOG_PRINT_L1("Pending txid " << txid << " not in pool after " << tx_propagation_timeout.count() <<
|
||||||
|
" seconds, marking as failed");
|
||||||
pit->second.m_state = wallet2::unconfirmed_transfer_details::failed;
|
pit->second.m_state = wallet2::unconfirmed_transfer_details::failed;
|
||||||
|
|
||||||
// the inputs aren't spent anymore, since the tx failed
|
// the inputs aren't spent anymore, since the tx failed
|
||||||
|
Loading…
Reference in New Issue
Block a user