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);
                 }
             }