Fixed division by zero due to thread race condition.

This commit is contained in:
Chad Fraleigh 2023-07-08 17:07:04 -07:00
parent b8f998f76a
commit 638e9b4d7f
No known key found for this signature in database
GPG key ID: 2415C39758458A8F
2 changed files with 6 additions and 2 deletions

View file

@ -1253,7 +1253,9 @@ namespace data
uint16_t inds[3]; uint16_t inds[3];
RAND_bytes ((uint8_t *)inds, sizeof (inds)); RAND_bytes ((uint8_t *)inds, sizeof (inds));
std::unique_lock<std::mutex> l(m_RouterInfosMutex); std::unique_lock<std::mutex> l(m_RouterInfosMutex);
inds[0] %= m_RouterInfos.size (); auto count = m_RouterInfos.size ();
if(count == 0) return nullptr;
inds[0] %= count;
auto it = m_RouterInfos.begin (); auto it = m_RouterInfos.begin ();
std::advance (it, inds[0]); std::advance (it, inds[0]);
// try random router // try random router

View file

@ -861,7 +861,9 @@ namespace transport
uint16_t inds[3]; uint16_t inds[3];
RAND_bytes ((uint8_t *)inds, sizeof (inds)); RAND_bytes ((uint8_t *)inds, sizeof (inds));
std::unique_lock<std::mutex> l(m_PeersMutex); std::unique_lock<std::mutex> l(m_PeersMutex);
inds[0] %= m_Peers.size (); auto count = m_Peers.size ();
if(count == 0) return nullptr;
inds[0] %= count;
auto it = m_Peers.begin (); auto it = m_Peers.begin ();
std::advance (it, inds[0]); std::advance (it, inds[0]);
// try random peer // try random peer