Move header comparison to _onTransferHeader function as there is no benefit in doing it after file is received

This commit is contained in:
schlagmichdoch 2024-02-15 00:38:30 +01:00
parent 7c471910ef
commit a98499ea5a

View file

@ -810,6 +810,14 @@ class Peer {
this._sendState(); this._sendState();
return; return;
} }
if (!this._fitsAcceptedHeader(header)) {
this._abortTransfer();
Events.fire('notify-user', Localization.getTranslation("notifications.files-incorrect"));
Logger.error("Received files differ from requested files. Abort!");
return;
}
this._timeStart = Date.now(); this._timeStart = Date.now();
this._addFileDigester(header); this._addFileDigester(header);
@ -870,34 +878,36 @@ class Peer {
} }
async _fileReceived(file) { async _fileReceived(file) {
if (!this._fitsHeader(file)) {
this._abortTransfer();
Events.fire('notify-user', Localization.getTranslation("notifications.files-incorrect"));
Logger.error("Received files differ from requested files. Abort!");
return;
}
// File transfer complete // File transfer complete
this._singleFileReceiveComplete(file); this._singleFileReceiveComplete(file);
if (this._acceptedRequest.header.length) return; // If less files received than header accepted -> wait for next file
if (this._filesReceived.length < this._acceptedRequest.header.length) return;
// We are done receiving // We are done receiving
Events.fire('set-progress', {peerId: this._peerId, progress: 1, status: 'receive'}); Events.fire('set-progress', {peerId: this._peerId, progress: 1, status: 'receive'});
this._allFilesReceiveComplete(); this._allFilesReceiveComplete();
} }
_fitsHeader(file) { _fitsAcceptedHeader(header) {
if (!this._acceptedRequest) { if (!this._acceptedRequest) {
return false; return false;
} }
// Check if file fits to header const positionFile = this._filesReceived.length;
const acceptedHeader = this._acceptedRequest.header.shift();
const sameSize = file.size === acceptedHeader.size; if (positionFile > this._acceptedRequest.header.length - 1) {
const sameName = file.name === acceptedHeader.name return false;
return sameSize && sameName; }
// Check if file header fits
const acceptedHeader = this._acceptedRequest.header[positionFile];
const sameSize = header.size === acceptedHeader.size;
const sameType = header.mime === acceptedHeader.mime;
const sameName = header.name === acceptedHeader.name;
return sameSize && sameType && sameName;
} }
_singleFileReceiveComplete(file) { _singleFileReceiveComplete(file) {