void CUpDownClient::ProcessRequestPartsPacketv2(const CMemFile& data) { CMD4Hash reqfilehash = data.ReadHash(); uint8 numblocks = data.ReadUInt8(); for (int i = 0; i < numblocks; i++) { if ( CLogger::IsEnabled( logClient ) ) { wxString msg = wxString::Format(_("Client requests %u"), i); msg += wxT(" ") + wxString::Format(_("File block %u-%u (%d bytes):"), auStartOffsets[i], auEndOffsets[i], auEndOffsets[i] - auStartOffsets[i]); msg += wxT(" ") + GetFullIP(); AddLogLineM(false, msg); } Requested_Block_Struct* reqblock = new Requested_Block_Struct; try { reqblock->StartOffset = data.GetIntTagValue(); reqblock->EndOffset = data.GetIntTagValue(); if (reqblock->StartOffset >= reqblock->EndOffset) { if ( CLogger::IsEnabled( logClient ) ) { AddLogLineM(false, _("Client request is invalid!")); } throw wxString(wxT("Client request is invalid!")); } md4cpy(reqblock->FileID, reqfilehash.GetHash()); reqblock->transferred = 0; AddReqBlock(reqblock); } catch (...) { delete reqblock; throw; } } }