rendered paste body bool bHasLongBlocks = false;
std::list<Pending_Block_Struct*>::iterator it = m_PendingBlocks_list.begin();
for (uint32 i = 0; i != 3; i++){
if (it != m_PendingBlocks_list.end()) {
Pending_Block_Struct* pending = *it++;
wxASSERT( pending->block->StartOffset <= pending->block->EndOffset );
if (pending->block->StartOffset > 0xFFFFFFFF || pending->block->EndOffset > 0xFFFFFFFF){
bHasLongBlocks = true;
if (!SupportsLargeFiles()){
// Requesting a large block from a client that doesn't support large files?
wxASSERT( false );
if (!GetSentCancelTransfer()){
CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT);
theStats::AddUpOverheadFileRequest(packet->GetPacketSize());
AddDebugLogLineM( false, logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + GetFullIP() );
SendPacket(packet,true,true);
SetSentCancelTransfer(1);
}
SetDownloadState(DS_ERROR);
}
break;
}
}
}
CMemFile data(16 /*Hash*/ + (3*(bHasLongBlocks ? 8 : 4) /* uint32/64 start*/) + (3*(bHasLongBlocks ? 8 : 4)/* uint32/64 end*/));
data.WriteHash(m_reqfile->GetFileHash());
it = m_PendingBlocks_list.begin();
for (uint32 i = 0; i != 3; i++) {
if (it != m_PendingBlocks_list.end()) {
Pending_Block_Struct* pending = *it++;
wxASSERT( pending->block->StartOffset <= pending->block->EndOffset );
pending->fZStreamError = 0;
pending->fRecovered = 0;
if (bHasLongBlocks) {
data.WriteUInt64(pending->block->StartOffset);
} else {
data.WriteUInt32(pending->block->StartOffset);
}
} else {
if (bHasLongBlocks) {
data.WriteUInt64(0);
} else {
data.WriteUInt32(0);
}
}
}
it = m_PendingBlocks_list.begin();
for (uint32 i = 0; i != 3; i++) {
if (it != m_PendingBlocks_list.end()) {
Requested_Block_Struct* block = (*it++)->block;
if (bHasLongBlocks) {
data.WriteUInt64(block->EndOffset+1);
} else {
data.WriteUInt32(block->EndOffset+1);
}
} else {
if (bHasLongBlocks) {
data.WriteUInt64(0);
} else {
data.WriteUInt32(0);
}
}
}
packet = new CPacket(&data, (bHasLongBlocks ? OP_EMULEPROT : OP_EDONKEYPROT), (bHasLongBlocks ? (uint8)OP_REQUESTPARTS_I64 : (uint8)OP_REQUESTPARTS));