Index: src/libchcore/TOverlappedWriter.cpp =================================================================== diff -u -N -rb941384e121190b6107f1c99b3233667e3daf4ce -re7ca9e2c6306cd94e5e5caecc9cfdb3b562d3cdf --- src/libchcore/TOverlappedWriter.cpp (.../TOverlappedWriter.cpp) (revision b941384e121190b6107f1c99b3233667e3daf4ce) +++ src/libchcore/TOverlappedWriter.cpp (.../TOverlappedWriter.cpp) (revision e7ca9e2c6306cd94e5e5caecc9cfdb3b562d3cdf) @@ -44,6 +44,27 @@ { } + void TOverlappedWriter::AddRetryBuffer(TOverlappedDataBuffer* pBuffer) + { + if(!pBuffer) + throw TCoreException(eErr_InvalidPointer, L"pBuffer", LOCATION); + + if(m_bReleaseMode) + m_spEmptyBuffers->Push(pBuffer); + else + { + LOG_TRACE(m_spLog) << L"Queuing buffer " << pBuffer << L" as write-retry; buffer-order: " << pBuffer->GetFilePosition() << + L", requested-data-size: " << pBuffer->GetRequestedDataSize() << + L", real-data-size: " << pBuffer->GetRealDataSize() << + L", file-position: " << pBuffer->GetFilePosition() << + L", error-code: " << pBuffer->GetErrorCode() << + L", status-code: " << pBuffer->GetStatusCode() << + L", is-last-part: " << pBuffer->IsLastPart(); + + m_tBuffersToWrite.Push(pBuffer); + } + } + TOverlappedDataBuffer* TOverlappedWriter::GetWriteBuffer() { if(m_bReleaseMode) @@ -73,9 +94,6 @@ L", status-code: " << pBuffer->GetStatusCode() << L", is-last-part: " << pBuffer->IsLastPart(); - // overwrite error code (to avoid treating the buffer as failed read) - pBuffer->SetErrorCode(ERROR_SUCCESS); - m_tFinishedBuffers.PushError(pBuffer, m_tBuffersToWrite); } }