diff --git a/libretroshare/src/ft/ftcontroller.cc b/libretroshare/src/ft/ftcontroller.cc index 79264dbe4..46394eef1 100644 --- a/libretroshare/src/ft/ftcontroller.cc +++ b/libretroshare/src/ft/ftcontroller.cc @@ -256,12 +256,16 @@ void ftController::run() tickTransfers() ; { - RsStackMutex stack2(doneMutex); + std::list files_to_complete ; - for(std::list::iterator it(mDone.begin()); it != mDone.end(); it++) + { + RsStackMutex stack2(doneMutex); + files_to_complete = mDone ; + mDone.clear(); + } + + for(std::list::iterator it(files_to_complete.begin()); it != files_to_complete.end(); ++it) completeFile(*it); - - mDone.clear(); } if(cnt++ % 10 == 0)