diff --git a/LaunchServer/source/response/update/UpdateResponse.java b/LaunchServer/source/response/update/UpdateResponse.java index 33bc6ae..7437284 100644 --- a/LaunchServer/source/response/update/UpdateResponse.java +++ b/LaunchServer/source/response/update/UpdateResponse.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.nio.file.Path; import java.util.Deque; import java.util.LinkedList; @@ -82,6 +83,12 @@ // Resolve and write file Path file = dir.resolve(action.name); + if (Files.size(file) != hFile.size()) { + output.writeBoolean(false); + output.flush(); + throw new IOException("Unknown hashed file: " + action.name); + } + output.writeBoolean(true); try (InputStream fileInput = IOHelper.newInput(file)) { IOHelper.transfer(fileInput, output.stream); } diff --git a/Launcher/TODO.txt b/Launcher/TODO.txt new file mode 100644 index 0000000..b5f4c32 --- /dev/null +++ b/Launcher/TODO.txt @@ -0,0 +1,3 @@ +1) обновить форж и тд 1.10.2 +2) сделать 1.11 +3) сделать 1.5.2 diff --git a/Launcher/source/request/update/UpdateRequest.java b/Launcher/source/request/update/UpdateRequest.java index ac36412..9b4ec3a 100644 --- a/Launcher/source/request/update/UpdateRequest.java +++ b/Launcher/source/request/update/UpdateRequest.java @@ -10,12 +10,10 @@ import java.time.Duration; import java.time.Instant; import java.util.LinkedList; -import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Queue; -import launcher.Launcher; import launcher.Launcher.Config; import launcher.LauncherAPI; import launcher.hasher.FileNameMatcher; @@ -120,7 +118,11 @@ Files.createDirectories(currentDir); break; case GET: - downloadFile(currentDir.resolve(action.name), (HashedFile) action.entry, input); + Path targetFile = currentDir.resolve(action.name); + if (!input.readBoolean()) { + throw new IOException("Serverside cached size mismath for file " + action.name); + } + downloadFile(targetFile, (HashedFile) action.entry, input); break; case CD_BACK: currentDir = currentDir.getParent();