diff --git a/aws-cpp-sdk-transfer/source/transfer/TransferHandle.cpp b/aws-cpp-sdk-transfer/source/transfer/TransferHandle.cpp index cbede5cad76..0223fc481ab 100644 --- a/aws-cpp-sdk-transfer/source/transfer/TransferHandle.cpp +++ b/aws-cpp-sdk-transfer/source/transfer/TransferHandle.cpp @@ -229,6 +229,7 @@ namespace Aws if(IsTransitionAllowed(currentStatus, value)) { + std::unique_lock semaphoreLock(m_statusLock); m_status.store(static_cast(value)); if (IsFinishedStatus(value)) @@ -238,7 +239,6 @@ namespace Aws CleanupDownloadStream(); } - std::unique_lock semaphoreLock(m_statusLock); m_waitUntilFinishedSignal.notify_all(); } } @@ -246,9 +246,9 @@ namespace Aws void TransferHandle::WaitUntilFinished() const { + std::unique_lock semaphoreLock(m_statusLock); if (!IsFinishedStatus(static_cast(m_status.load())) || HasPendingParts()) { - std::unique_lock semaphoreLock(m_statusLock); m_waitUntilFinishedSignal.wait(semaphoreLock, [this]() { return IsFinishedStatus(static_cast(m_status.load())) && !HasPendingParts(); }); semaphoreLock.unlock(); @@ -301,4 +301,4 @@ namespace Aws } } } -} \ No newline at end of file +}