From 207c0aea02de3a0a18be1a9a6a823923e86273d6 Mon Sep 17 00:00:00 2001 From: Gaston Dombiak Date: Sun, 31 Oct 2004 03:35:20 +0000 Subject: [PATCH] Answer an item-not-found error when Smack receives a disco#info and node is not null. SMACK-8 git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@2402 b35dd754-fafc-0310-a699-88a17e54d16e --- .../smackx/ServiceDiscoveryManager.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/source/org/jivesoftware/smackx/ServiceDiscoveryManager.java b/source/org/jivesoftware/smackx/ServiceDiscoveryManager.java index acffd409f..d1467cfed 100644 --- a/source/org/jivesoftware/smackx/ServiceDiscoveryManager.java +++ b/source/org/jivesoftware/smackx/ServiceDiscoveryManager.java @@ -218,17 +218,25 @@ public class ServiceDiscoveryManager { response.setType(IQ.Type.RESULT); response.setTo(discoverInfo.getFrom()); response.setPacketID(discoverInfo.getPacketID()); - // Set this client identity - DiscoverInfo.Identity identity = new DiscoverInfo.Identity("client", - getIdentityName()); - identity.setType(getIdentityType()); - response.addIdentity(identity); - // Add the registered features to the response - synchronized (features) { - for (Iterator it = getFeatures(); it.hasNext();) { - response.addFeature((String) it.next()); + // Add the client's identity and features only if "node" is null + if (discoverInfo.getNode() == null) { + // Set this client identity + DiscoverInfo.Identity identity = new DiscoverInfo.Identity("client", + getIdentityName()); + identity.setType(getIdentityType()); + response.addIdentity(identity); + // Add the registered features to the response + synchronized (features) { + for (Iterator it = getFeatures(); it.hasNext();) { + response.addFeature((String) it.next()); + } } } + else { + // Return an error since a client doesn't have nodes + response.setType(IQ.Type.ERROR); + response.setError(new XMPPError(404, "item-not-found")); + } connection.sendPacket(response); } }