linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #05928
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3022: partially revert r3021, guard hasFreeSlot by the mutex
------------------------------------------------------------
revno: 3022
committer: iceman50 <bdcdevel@xxxxxxxxx>
branch nick: dcplusplus
timestamp: Fri 2012-08-03 14:07:49 -0500
message:
partially revert r3021, guard hasFreeSlot by the mutex
modified:
dcpp/UploadManager.cpp
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/UploadManager.cpp'
--- dcpp/UploadManager.cpp 2012-08-03 11:40:07 +0000
+++ dcpp/UploadManager.cpp 2012-08-03 19:07:49 +0000
@@ -105,7 +105,7 @@
if(!aSource.isSet(UserConnection::FLAG_HASSLOT)) {
bool hasReserved = hasReservedSlot(aSource.getUser());
bool isFavorite = FavoriteManager::getInstance()->hasSlot(aSource.getUser());
- bool hasFreeSlot = (getFreeSlots() > 0) && ((waitingFiles.empty() && connectingUsers.empty()) || isConnecting(aSource.getUser()));
+ bool hasFreeSlot = [&]() -> bool { Lock l(cs); return (getFreeSlots() > 0) && ((waitingFiles.empty() && connectingUsers.empty()) || isConnecting(aSource.getUser())); }();
if(!(hasReserved || isFavorite || getAutoSlot() || hasFreeSlot)) {
bool supportsMini = aSource.isSet(UserConnection::FLAG_SUPPORTS_MINISLOTS);
@@ -284,8 +284,10 @@
}
void UploadManager::reserveSlot(const HintedUser& aUser) {
- Lock l(cs);
- reservedSlots.insert(aUser);
+ {
+ Lock l(cs);
+ reservedSlots.insert(aUser);
+ }
if(aUser.user->isOnline()) {
auto it = find_if(waitingUsers.cbegin(), waitingUsers.cend(), [&](const UserPtr& u) { return u == aUser.user; });
@@ -472,7 +474,6 @@
}
void UploadManager::notifyQueuedUsers() {
- Lock l(cs);
if(waitingUsers.empty()) return; //no users to notify
int freeSlots = getFreeSlots();