From 4edd1b09946b861779e131c4a9c1c761ea445035 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 27 Apr 2018 23:55:16 +0200 Subject: include node when requesting disco features --- .../messenger/services/XmppConnectionService.java | 34 ++++++++++++---------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java') diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index d0240251c..ef98b6aa6 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -178,6 +178,15 @@ public class XmppConnectionService extends Service { private final IqGenerator mIqGenerator = new IqGenerator(this); private final List mInProgressAvatarFetches = new ArrayList<>(); private final HashSet mLowPingTimeoutMode = new HashSet<>(); + private final OnIqPacketReceived mDefaultIqHandler = (account, packet) -> { + if (packet.getType() != IqPacket.TYPE.RESULT) { + Element error = packet.findChild("error"); + String text = error != null ? error.findChildContent("text") : null; + if (text != null) { + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received iq error - " + text); + } + } + }; public DatabaseBackend databaseBackend; private ReplacingSerialSingleThreadExecutor mContactMergerExecutor = new ReplacingSerialSingleThreadExecutor(true); private long mLastActivity = 0; @@ -200,15 +209,6 @@ public class XmppConnectionService extends Service { private OnMessagePacketReceived mMessageParser = new MessageParser(this); private OnPresencePacketReceived mPresenceParser = new PresenceParser(this); private IqParser mIqParser = new IqParser(this); - private final OnIqPacketReceived mDefaultIqHandler = (account, packet) -> { - if (packet.getType() != IqPacket.TYPE.RESULT) { - Element error = packet.findChild("error"); - String text = error != null ? error.findChildContent("text") : null; - if (text != null) { - Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received iq error - " + text); - } - } - }; private MessageGenerator mMessageGenerator = new MessageGenerator(this); public OnContactStatusChanged onContactStatusChanged = (contact, online) -> { Conversation conversation = find(getConversations(), contact); @@ -4011,19 +4011,23 @@ public class XmppConnectionService extends Service { account.inProgressDiscoFetches.add(key); IqPacket request = new IqPacket(IqPacket.TYPE.GET); request.setTo(jid); - request.query("http://jabber.org/protocol/disco#info"); - Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": making disco request for " + key.second + " to " + jid); - sendIqPacket(account, request, (account1, discoPacket) -> { + String node = presence.getNode(); + Element query = request.query("http://jabber.org/protocol/disco#info"); + if (node != null) { + query.setAttribute("node", node); + } + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": making disco request for " + key.second + " to " + jid + "node=" + node); + sendIqPacket(account, request, (a, discoPacket) -> { if (discoPacket.getType() == IqPacket.TYPE.RESULT) { ServiceDiscoveryResult disco1 = new ServiceDiscoveryResult(discoPacket); if (presence.getVer().equals(disco1.getVer())) { databaseBackend.insertDiscoveryResult(disco1); - injectServiceDiscorveryResult(account1.getRoster(), presence.getHash(), presence.getVer(), disco1); + injectServiceDiscorveryResult(a.getRoster(), presence.getHash(), presence.getVer(), disco1); } else { - Log.d(Config.LOGTAG, account1.getJid().asBareJid() + ": mismatch in caps for contact " + jid + " " + presence.getVer() + " vs " + disco1.getVer()); + Log.d(Config.LOGTAG, a.getJid().asBareJid() + ": mismatch in caps for contact " + jid + " " + presence.getVer() + " vs " + disco1.getVer()); } } - account1.inProgressDiscoFetches.remove(key); + a.inProgressDiscoFetches.remove(key); }); } } -- cgit v1.2.3