ConnectionManager: avoid duplicate IDs
Change-Id: Ie56f065a58b9a5453d3b2df86cd7a7b249fac077
diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index 339c8d5..67623b2 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -747,15 +747,16 @@
cb(nullptr, deviceId);
return;
}
- dht::Value::Id vid = ValueIdDist(1, ID_MAX_VAL)(sthis->rand);
+ dht::Value::Id vid;
auto isConnectingToDevice = false;
{
std::lock_guard<std::mutex> lk(sthis->connectCbsMtx_);
+ vid = ValueIdDist(1, ID_MAX_VAL)(sthis->rand);
auto pendingsIt = sthis->pendingOperations_.find(deviceId);
if (pendingsIt != sthis->pendingOperations_.end()) {
const auto& pendings = pendingsIt->second;
while (pendings.connecting.find(vid) != pendings.connecting.end()
- && pendings.waiting.find(vid) != pendings.waiting.end()) {
+ || pendings.waiting.find(vid) != pendings.waiting.end()) {
vid = ValueIdDist(1, ID_MAX_VAL)(sthis->rand);
}
}