Fixed file transfer sequence bug
Esse commit está contido em:
@@ -1040,14 +1040,9 @@ bool BridgeManager::SendFile(FILE *file, unsigned int destination, unsigned int
|
||||
{
|
||||
bool isLastSequence = (sequenceIndex == sequenceCount - 1);
|
||||
unsigned int sequenceSize = (isLastSequence) ? lastSequenceSize : fileTransferSequenceMaxLength;
|
||||
unsigned int sequenceByteCount;
|
||||
unsigned int sequenceTotalByteCount = sequenceSize * fileTransferPacketSize;
|
||||
|
||||
if (isLastSequence)
|
||||
sequenceByteCount = ((partialPacketByteCount) ? lastSequenceSize - 1 : lastSequenceSize) * fileTransferPacketSize + partialPacketByteCount;
|
||||
else
|
||||
sequenceByteCount = fileTransferSequenceMaxLength * fileTransferPacketSize;
|
||||
|
||||
FlashPartFileTransferPacket *beginFileTransferPacket = new FlashPartFileTransferPacket(sequenceByteCount);
|
||||
FlashPartFileTransferPacket *beginFileTransferPacket = new FlashPartFileTransferPacket(sequenceTotalByteCount);
|
||||
success = SendPacket(beginFileTransferPacket);
|
||||
delete beginFileTransferPacket;
|
||||
|
||||
@@ -1169,9 +1164,12 @@ bool BridgeManager::SendFile(FILE *file, unsigned int destination, unsigned int
|
||||
previousPercent = currentPercent;
|
||||
}
|
||||
|
||||
unsigned int sequenceEffectiveByteCount = (isLastSequence && partialPacketByteCount != 0) ?
|
||||
fileTransferPacketSize * (lastSequenceSize - 1) + partialPacketByteCount : sequenceTotalByteCount;
|
||||
|
||||
if (destination == EndFileTransferPacket::kDestinationPhone)
|
||||
{
|
||||
EndPhoneFileTransferPacket *endPhoneFileTransferPacket = new EndPhoneFileTransferPacket(sequenceByteCount, 0, deviceType, fileIdentifier, isLastSequence);
|
||||
EndPhoneFileTransferPacket *endPhoneFileTransferPacket = new EndPhoneFileTransferPacket(sequenceEffectiveByteCount, 0, deviceType, fileIdentifier, isLastSequence);
|
||||
|
||||
success = SendPacket(endPhoneFileTransferPacket, kDefaultTimeoutSend, kSendEmptyTransferBeforeAndAfter);
|
||||
delete endPhoneFileTransferPacket;
|
||||
@@ -1185,7 +1183,7 @@ bool BridgeManager::SendFile(FILE *file, unsigned int destination, unsigned int
|
||||
}
|
||||
else // destination == EndFileTransferPacket::kDestinationModem
|
||||
{
|
||||
EndModemFileTransferPacket *endModemFileTransferPacket = new EndModemFileTransferPacket(sequenceByteCount, 0, deviceType, isLastSequence);
|
||||
EndModemFileTransferPacket *endModemFileTransferPacket = new EndModemFileTransferPacket(sequenceEffectiveByteCount, 0, deviceType, isLastSequence);
|
||||
|
||||
success = SendPacket(endModemFileTransferPacket, kDefaultTimeoutSend, kSendEmptyTransferBeforeAndAfter);
|
||||
delete endModemFileTransferPacket;
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Heimdall
|
||||
{
|
||||
public:
|
||||
|
||||
SendFilePartPacket(FILE *file, int size) : OutboundPacket(size)
|
||||
SendFilePartPacket(FILE *file, unsigned int size) : OutboundPacket(size)
|
||||
{
|
||||
memset(data, 0, size);
|
||||
|
||||
@@ -45,13 +45,13 @@ namespace Heimdall
|
||||
fseek(file, position, SEEK_SET);
|
||||
|
||||
// min(fileSize, size)
|
||||
int bytesToRead = (fileSize < size) ? fileSize - position : size;
|
||||
unsigned int bytesToRead = (fileSize < size) ? fileSize - position : size;
|
||||
|
||||
// bytesRead is discarded (it's just there to stop GCC warnings)
|
||||
int bytesRead = fread(data, 1, bytesToRead, file);
|
||||
unsigned int bytesRead = fread(data, 1, bytesToRead, file);
|
||||
}
|
||||
|
||||
SendFilePartPacket(unsigned char *buffer, int size) : OutboundPacket(size)
|
||||
SendFilePartPacket(unsigned char *buffer, unsigned int size) : OutboundPacket(size)
|
||||
{
|
||||
memcpy(data, buffer, size);
|
||||
}
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário