mirror of
https://github.com/overte-org/overte.git
synced 2025-07-07 05:49:57 +02:00
Merge pull request #106 from birarda/atp-mappings
add overwriting of files during upload if hash doesn't match
This commit is contained in:
commit
ac7cbbd960
1 changed files with 34 additions and 18 deletions
|
@ -59,13 +59,26 @@ void UploadAssetTask::run() {
|
||||||
|
|
||||||
QFile file { _resourcesDir.filePath(QString(hexHash)) };
|
QFile file { _resourcesDir.filePath(QString(hexHash)) };
|
||||||
|
|
||||||
|
bool existingCorrectFile = false;
|
||||||
|
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
qDebug() << "[WARNING] This file already exists: " << hexHash;
|
// check if the local file has the correct contents, otherwise we overwrite
|
||||||
|
if (file.open(QIODevice::ReadOnly) && hashData(file.readAll()) == hash) {
|
||||||
|
qDebug() << "Not overwriting existing verified file: " << hexHash;
|
||||||
|
|
||||||
|
existingCorrectFile = true;
|
||||||
|
|
||||||
replyPacket->writePrimitive(AssetServerError::NoError);
|
replyPacket->writePrimitive(AssetServerError::NoError);
|
||||||
replyPacket->write(hash);
|
replyPacket->write(hash);
|
||||||
} else if (file.open(QIODevice::WriteOnly) && file.write(fileData) == qint64(fileSize)) {
|
} else {
|
||||||
qDebug() << "Wrote file" << hash << "to disk. Upload complete";
|
qDebug() << "Overwriting an existing file whose contents did not match the expected hash: " << hexHash;
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!existingCorrectFile) {
|
||||||
|
if (file.open(QIODevice::WriteOnly) && file.write(fileData) == qint64(fileSize)) {
|
||||||
|
qDebug() << "Wrote file" << hexHash << "to disk. Upload complete";
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
replyPacket->writePrimitive(AssetServerError::NoError);
|
replyPacket->writePrimitive(AssetServerError::NoError);
|
||||||
|
@ -84,6 +97,9 @@ void UploadAssetTask::run() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
nodeList->sendPacket(std::move(replyPacket), *_senderNode);
|
nodeList->sendPacket(std::move(replyPacket), *_senderNode);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue