aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/http/HttpUploadConnection.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-02-04 19:31:28 +0100
committerChristian Schneppe <christian@pix-art.de>2019-02-04 19:31:28 +0100
commit3eea84269d2ab7dc921236b24f334b1279e1f50f (patch)
treeae1a840d5baedfbf0715ecb8287fdcb465deeec6 /src/main/java/de/pixart/messenger/http/HttpUploadConnection.java
parentdd8d63be4c584e6aadb6f56aa920cb1bec16e4ea (diff)
make sure that http upload/download is not startetd multiple times
Diffstat (limited to 'src/main/java/de/pixart/messenger/http/HttpUploadConnection.java')
-rw-r--r--src/main/java/de/pixart/messenger/http/HttpUploadConnection.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/main/java/de/pixart/messenger/http/HttpUploadConnection.java b/src/main/java/de/pixart/messenger/http/HttpUploadConnection.java
index 49debcb78..92ccf86e1 100644
--- a/src/main/java/de/pixart/messenger/http/HttpUploadConnection.java
+++ b/src/main/java/de/pixart/messenger/http/HttpUploadConnection.java
@@ -43,14 +43,15 @@ public class HttpUploadConnection implements Transferable {
private boolean cancelled = false;
private boolean delayed = false;
private DownloadableFile file;
- private Message message;
+ private final Message message;
private String mime;
private SlotRequester.Slot slot;
private byte[] key = null;
private long transmitted = 0;
- public HttpUploadConnection(Method method, HttpConnectionManager httpConnectionManager) {
+ public HttpUploadConnection(Message message, Method method, HttpConnectionManager httpConnectionManager) {
+ this.message = message;
this.method = method;
this.mHttpConnectionManager = httpConnectionManager;
this.mXmppConnectionService = httpConnectionManager.getXmppConnectionService();
@@ -87,13 +88,16 @@ public class HttpUploadConnection implements Transferable {
}
private void fail(String errorMessage) {
+ finish();
+ mXmppConnectionService.markMessage(message, Message.STATUS_SEND_FAILED, cancelled ? Message.ERROR_MESSAGE_CANCELLED : errorMessage);
+ }
+
+ private void finish() {
mHttpConnectionManager.finishUploadConnection(this);
message.setTransferable(null);
- mXmppConnectionService.markMessage(message, Message.STATUS_SEND_FAILED, cancelled ? Message.ERROR_MESSAGE_CANCELLED : errorMessage);
}
- public void init(Message message, boolean delay) {
- this.message = message;
+ public void init(boolean delay) {
final Account account = message.getConversation().getAccount();
this.file = mXmppConnectionService.getFileBackend().getFile(message, false);
if (message.getEncryption() == Message.ENCRYPTION_PGP || message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
@@ -123,6 +127,7 @@ public class HttpUploadConnection implements Transferable {
} else {
md5 = null;
}
+
this.file.setExpectedSize(file.getSize() + (file.getKey() != null ? 16 : 0));
message.resetFileParams();
this.mSlotRequester.request(method, account, file, mime, md5, new SlotRequester.OnSlotRequested() {
@@ -210,7 +215,7 @@ public class HttpUploadConnection implements Transferable {
}
mXmppConnectionService.getFileBackend().updateFileParams(message, get);
mXmppConnectionService.getFileBackend().updateMediaScanner(file);
- message.setTransferable(null);
+ finish();
message.setCounterpart(message.getConversation().getJid().asBareJid());
mXmppConnectionService.resendMessage(message, delayed);
} else {
@@ -230,4 +235,8 @@ public class HttpUploadConnection implements Transferable {
WakeLockHelper.release(wakeLock);
}
}
-}
+
+ public Message getMessage() {
+ return message;
+ }
+} \ No newline at end of file