From 3eea84269d2ab7dc921236b24f334b1279e1f50f Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Mon, 4 Feb 2019 19:31:28 +0100 Subject: make sure that http upload/download is not startetd multiple times --- .../messenger/http/HttpUploadConnection.java | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/main/java/de/pixart/messenger/http/HttpUploadConnection.java') 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 -- cgit v1.2.3