let jingle connection and manager handle message status

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java      | 4 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java        | 4 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java | 6 
3 files changed, 10 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -349,7 +349,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 		}
 		message.setCounterpart(conversation.getNextCounterpart());
 		message.setType(Message.TYPE_FILE);
-		message.setStatus(Message.STATUS_OFFERED);
 		String path = getFileBackend().getOriginalPath(uri);
 		if (path!=null) {
 			message.setRelativeFilePath(path);
@@ -392,7 +391,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 		}
 		message.setCounterpart(conversation.getNextCounterpart());
 		message.setType(Message.TYPE_IMAGE);
-		message.setStatus(Message.STATUS_OFFERED);
 		new Thread(new Runnable() {
 
 			@Override
@@ -813,7 +811,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 			Presences presences = contact.getPresences();
 			if ((message.getCounterpart() != null)
 					&& (presences.has(message.getCounterpart().getResourcepart()))) {
-				markMessage(message, Message.STATUS_OFFERED);
 				mJingleConnectionManager.createNewConnection(message);
 			} else {
 				if (presences.size() == 1) {
@@ -823,7 +820,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 					} catch (InvalidJidException e) {
 						return;
 					}
-					markMessage(message, Message.STATUS_OFFERED);
 					mJingleConnectionManager.createNewConnection(message);
 				}
 			}

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java 🔗

@@ -271,6 +271,9 @@ public class JingleConnection implements Downloadable {
 		this.mergeCandidates(JingleCandidate.parse(content.socks5transport()
 				.getChildren()));
 		this.fileOffer = packet.getJingleContent().getFileOffer();
+
+		mXmppConnectionService.sendIqPacket(account,packet.generateResponse(IqPacket.TYPE.RESULT),null);
+
 		if (fileOffer != null) {
 			Element fileSize = fileOffer.findChild("size");
 			Element fileNameElement = fileOffer.findChild("name");
@@ -381,6 +384,7 @@ public class JingleConnection implements Downloadable {
 				@Override
 				public void onIqPacketReceived(Account account, IqPacket packet) {
 					if (packet.getType() != IqPacket.TYPE.ERROR) {
+						Log.d(Config.LOGTAG,account.getJid().toBareJid()+": other party received offer");
 						mJingleStatus = JINGLE_STATUS_INITIATED;
 						mXmppConnectionService.markMessage(message, Message.STATUS_OFFERED);
 					} else {

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java 🔗

@@ -9,6 +9,7 @@ import android.annotation.SuppressLint;
 import android.util.Log;
 import eu.siacs.conversations.Config;
 import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Downloadable;
 import eu.siacs.conversations.entities.Message;
 import eu.siacs.conversations.services.AbstractConnectionManager;
 import eu.siacs.conversations.services.XmppConnectionService;
@@ -58,7 +59,12 @@ public class JingleConnectionManager extends AbstractConnectionManager {
 	}
 
 	public JingleConnection createNewConnection(Message message) {
+		Downloadable old = message.getDownloadable();
+		if (old != null) {
+			old.cancel();
+		}
 		JingleConnection connection = new JingleConnection(this);
+		mXmppConnectionService.markMessage(message,Message.STATUS_WAITING);
 		connection.init(message);
 		this.connections.add(connection);
 		return connection;