From 1f7f82da7b4e98e76588721d16ebf2b3e42e9084 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 7 Oct 2016 10:05:08 +0200 Subject: [PATCH] respond to chat marker request only when mutual presence subscription exists --- .../siacs/conversations/crypto/axolotl/AxolotlService.java | 2 +- src/main/java/eu/siacs/conversations/entities/Contact.java | 4 ++-- src/main/java/eu/siacs/conversations/entities/Message.java | 2 +- .../java/eu/siacs/conversations/parser/MessageParser.java | 6 +++++- .../siacs/conversations/services/XmppConnectionService.java | 5 ++++- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index 508168c83..1bc5fa836 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -665,7 +665,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { final List jids = getCryptoTargets(conversation); for(Jid jid : jids) { if (!hasAny(jid) && (!deviceIds.containsKey(jid) || deviceIds.get(jid).isEmpty())) { - if (conversation.getAccount().getRoster().getContact(jid).trusted()) { + if (conversation.getAccount().getRoster().getContact(jid).mutualPresenceSubscription()) { return new Pair<>(AxolotlCapability.MISSING_KEYS,jid); } else { return new Pair<>(AxolotlCapability.MISSING_PRESENCE,jid); diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java index e512b5861..70af45d40 100644 --- a/src/main/java/eu/siacs/conversations/entities/Contact.java +++ b/src/main/java/eu/siacs/conversations/entities/Contact.java @@ -118,7 +118,7 @@ public class Contact implements ListItem, Blockable { return this.systemName; } else if (this.serverName != null) { return this.serverName; - } else if (this.presenceName != null && trusted()) { + } else if (this.presenceName != null && mutualPresenceSubscription()) { return this.presenceName; } else if (jid.hasLocalpart()) { return jid.getLocalpart(); @@ -487,7 +487,7 @@ public class Contact implements ListItem, Blockable { } } - public boolean trusted() { + public boolean mutualPresenceSubscription() { return getOption(Options.FROM) && getOption(Options.TO); } diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 4ff082756..e3577b063 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -542,7 +542,7 @@ public class Message extends AbstractEntity { public boolean trusted() { Contact contact = this.getContact(); - return (status > STATUS_RECEIVED || (contact != null && contact.trusted())); + return (status > STATUS_RECEIVED || (contact != null && contact.mutualPresenceSubscription())); } public boolean fixCounterpart() { diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 86b7a7dc8..b45530121 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -539,7 +539,11 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece mXmppConnectionService.updateConversationUi(); } - if (mXmppConnectionService.confirmMessages() && remoteMsgId != null && !isForwarded && !isTypeGroupChat) { + if (mXmppConnectionService.confirmMessages() + && message.trusted() + && remoteMsgId != null + && !isForwarded + && !isTypeGroupChat) { sendMessageReceipts(account, packet); } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index fc51b81ca..e8b13ddea 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -3115,7 +3115,10 @@ public class XmppConnectionService extends Service { if (this.markRead(conversation)) { updateConversationUi(); } - if (confirmMessages() && markable != null && markable.getRemoteMsgId() != null) { + if (confirmMessages() + && markable != null + && markable.trusted() + && markable.getRemoteMsgId() != null) { Log.d(Config.LOGTAG, conversation.getAccount().getJid().toBareJid() + ": sending read marker to " + markable.getCounterpart().toString()); Account account = conversation.getAccount(); final Jid to = markable.getCounterpart();