void CDownloadWithSources::RemoveOverlappingSources(QWORD nOffset, QWORD nLength) { CQuickLock pLock( Transfers.m_pSection ); for ( POSITION posSource = GetIterator() ; posSource ; ) { CDownloadSource* pSource = GetNext( posSource ); if ( pSource->TouchedRange( nOffset, nLength ) ) { if ( GetTaskType() == dtaskMergeFile ) { // Merging process can produce corrupted blocks, retry connection after 30 seconds pSource->m_nFailures = 0; pSource->Close( 30 ); } else { theApp.Message( MSG_ERROR, IDS_DOWNLOAD_VERIFY_DROP, (LPCTSTR)CString( inet_ntoa( pSource->m_pAddress ) ), (LPCTSTR)pSource->m_sServer, (LPCTSTR)m_sName, nOffset, nOffset + nLength - 1 ); pSource->Remove( TRUE, FALSE ); } } } }
void CDownloadWithSources::RemoveOverlappingSources(QWORD nOffset, QWORD nLength) { for ( CDownloadSource* pSource = GetFirstSource() ; pSource ; ) { CDownloadSource* pNext = pSource->m_pNext; if ( pSource->TouchedRange( nOffset, nLength ) ) { theApp.Message( MSG_ERROR, IDS_DOWNLOAD_VERIFY_DROP, (LPCTSTR)CString( inet_ntoa( pSource->m_pAddress ) ), (LPCTSTR)pSource->m_sServer, (LPCTSTR)m_sRemoteName, nOffset, nOffset + nLength - 1 ); pSource->Remove( TRUE, TRUE ); } pSource = pNext; } }