| 689 | } |
| 690 | |
| 691 | void CUpDownClient::ProcessRequestPartsPacket(const uint8_t* pachPacket, uint32 nSize, bool largeblocks) { |
| 692 | |
| 693 | CMemFile data(pachPacket, nSize); |
| 694 | |
| 695 | CMD4Hash reqfilehash = data.ReadHash(); |
| 696 | |
| 697 | uint64 auStartOffsets[3]; |
| 698 | uint64 auEndOffsets[3]; |
| 699 | |
| 700 | if (largeblocks) { |
| 701 | auStartOffsets[0] = data.ReadUInt64(); |
| 702 | auStartOffsets[1] = data.ReadUInt64(); |
| 703 | auStartOffsets[2] = data.ReadUInt64(); |
| 704 | |
| 705 | auEndOffsets[0] = data.ReadUInt64(); |
| 706 | auEndOffsets[1] = data.ReadUInt64(); |
| 707 | auEndOffsets[2] = data.ReadUInt64(); |
| 708 | } else { |
| 709 | auStartOffsets[0] = data.ReadUInt32(); |
| 710 | auStartOffsets[1] = data.ReadUInt32(); |
| 711 | auStartOffsets[2] = data.ReadUInt32(); |
| 712 | |
| 713 | auEndOffsets[0] = data.ReadUInt32(); |
| 714 | auEndOffsets[1] = data.ReadUInt32(); |
| 715 | auEndOffsets[2] = data.ReadUInt32(); |
| 716 | } |
| 717 | |
| 718 | for (unsigned int i = 0; i < itemsof(auStartOffsets); i++) { |
| 719 | AddDebugLogLineN(logClient, |
| 720 | CFormat("Client %s requests %d File block %d-%d (%d bytes):") |
| 721 | % GetFullIP() % i % auStartOffsets[i] % auEndOffsets[i] |
| 722 | % (auEndOffsets[i] - auStartOffsets[i])); |
| 723 | if (auEndOffsets[i] > auStartOffsets[i]) { |
| 724 | Requested_Block_Struct* reqblock = new Requested_Block_Struct; |
| 725 | reqblock->StartOffset = auStartOffsets[i]; |
| 726 | reqblock->EndOffset = auEndOffsets[i]; |
| 727 | md4cpy(reqblock->FileID, reqfilehash.GetHash()); |
| 728 | reqblock->transferred = 0; |
| 729 | AddReqBlock(reqblock, false); |
| 730 | } else { |
| 731 | if (auEndOffsets[i] != 0 || auStartOffsets[i] != 0) { |
| 732 | AddDebugLogLineN(logClient, "Client request is invalid!"); |
| 733 | } |
| 734 | } |
| 735 | } |
| 736 | if (theApp->uploadDiskIOThread) { |
| 737 | theApp->uploadDiskIOThread->NewBlockRequestsAvailable(); |
| 738 | } |
| 739 | } |
| 740 | |
| 741 | void CUpDownClient::ProcessRequestPartsPacketv2(const CMemFile& data) { |
| 742 |
no test coverage detected