summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-23 16:52:16 +0200
committerSimon Rettberg2015-09-23 16:52:16 +0200
commit8bb1ae726b5108d8ff58dbfd36378fb8319dfa98 (patch)
tree05e0b880c824673bc9d7e0d8bc2c33e8c3630b28 /dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java
parent[server] Fix race condition on delete; check for vmstore before up/download (diff)
downloadtutor-module-8bb1ae726b5108d8ff58dbfd36378fb8319dfa98.tar.gz
tutor-module-8bb1ae726b5108d8ff58dbfd36378fb8319dfa98.tar.xz
tutor-module-8bb1ae726b5108d8ff58dbfd36378fb8319dfa98.zip
[client] Disable login button while login is running; create legacy vmx if server doesn't supply one
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java
index 0cd77713..0aa48e8c 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java
@@ -103,12 +103,12 @@ public class DownloadTask extends TransferTask {
if (chunk == null)
return;
// TODO: Hash check, async
- chunks.markSuccessful(chunk);
try {
synchronized (fileHandle) {
fileHandle.seek(chunk.range.startOffset);
fileHandle.write(buffer, 0, chunk.range.getLength());
}
+ chunks.markSuccessful(chunk);
} catch (Exception e) {
LOGGER.error("Could not write to file at offset " + chunk.range.startOffset, e);
fileWritable = false;
@@ -166,7 +166,8 @@ public class DownloadTask extends TransferTask {
if (consecutiveInitFails.get() > 20) {
state = TransferState.ERROR;
error = "Cannot talk to server after 20 tries...";
- } else if (chunks.isComplete()) {
+ } else if (chunks.isComplete() && getTransferCount() == 0) {
+ Util.safeClose(fileHandle);
state = TransferState.FINISHED;
error = null;
} else {