Commit 8d801e92 authored by Alex Wenckus's avatar Alex Wenckus Committed by alex

1) FileTransferProxy will no longer return null for its disco items and cause...

1) FileTransferProxy will no longer return null for its disco items and cause a critical NPE. JM-655
2) Streamlined server disco items registration process so as to prevent confusion in the future. JM-656

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@3813 b35dd754-fafc-0310-a699-88a17e54d16e
parent fc7f63e9
...@@ -173,7 +173,7 @@ public class IQDiscoItemsHandler extends IQHandler implements ServerFeaturesProv ...@@ -173,7 +173,7 @@ public class IQDiscoItemsHandler extends IQHandler implements ServerFeaturesProv
* *
* @param provider the ServerItemsProvider that provides new server items. * @param provider the ServerItemsProvider that provides new server items.
*/ */
private void addServerItemsProvider(ServerItemsProvider provider) { public void addServerItemsProvider(ServerItemsProvider provider) {
DiscoServerItem discoItem; DiscoServerItem discoItem;
for (Iterator it = provider.getItems(); it.hasNext();) { for (Iterator it = provider.getItems(); it.hasNext();) {
discoItem = (DiscoServerItem)it.next(); discoItem = (DiscoServerItem)it.next();
...@@ -187,6 +187,26 @@ public class IQDiscoItemsHandler extends IQHandler implements ServerFeaturesProv ...@@ -187,6 +187,26 @@ public class IQDiscoItemsHandler extends IQHandler implements ServerFeaturesProv
} }
} }
/**
* Removes the provided items as a service of the service.
*
* @param provider The provider that is being removed.
*/
public void removeServerItemsProvider(ServerItemsProvider provider) {
DiscoServerItem discoItem;
for (Iterator it = provider.getItems(); it.hasNext();) {
discoItem = (DiscoServerItem)it.next();
// Remove the item from the server items list
removeComponentItem(discoItem.getJID());
// Remove the item as a valid entity that could receive info and items disco requests
String host = new JID(discoItem.getJID()).getDomain();
infoHandler.removeProvider(host);
removeProvider(host);
}
}
/** /**
* Sets the DiscoItemsProvider to use when a disco#items packet is sent to the server itself * Sets the DiscoItemsProvider to use when a disco#items packet is sent to the server itself
* and the specified node. For instance, if node matches "http://jabber.org/protocol/offline" * and the specified node. For instance, if node matches "http://jabber.org/protocol/offline"
......
...@@ -31,10 +31,7 @@ import org.xmpp.packet.PacketError; ...@@ -31,10 +31,7 @@ import org.xmpp.packet.PacketError;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/** /**
* Manages the transfering of files between two remote entities on the jabber network. * Manages the transfering of files between two remote entities on the jabber network.
...@@ -167,11 +164,10 @@ public class FileTransferProxy extends BasicModule ...@@ -167,11 +164,10 @@ public class FileTransferProxy extends BasicModule
routingTable.addRoute(getAddress(), this); routingTable.addRoute(getAddress(), this);
XMPPServer server = XMPPServer.getInstance(); XMPPServer server = XMPPServer.getInstance();
server.getIQDiscoItemsHandler().addComponentItem(getAddress().toString(), "Socks 5 Bytestreams Proxy"); server.getIQDiscoItemsHandler().addServerItemsProvider(this);
} }
else { else {
XMPPServer.getInstance().getIQDiscoItemsHandler() XMPPServer.getInstance().getIQDiscoItemsHandler().removeServerItemsProvider(this);
.removeComponentItem(getAddress().toString());
} }
} }
...@@ -229,10 +225,10 @@ public class FileTransferProxy extends BasicModule ...@@ -229,10 +225,10 @@ public class FileTransferProxy extends BasicModule
} }
public Iterator<DiscoServerItem> getItems() { public Iterator<DiscoServerItem> getItems() {
List<DiscoServerItem> items = new ArrayList<DiscoServerItem>();
if(!isEnabled()) { if(!isEnabled()) {
return null; return items.iterator();
} }
List<DiscoServerItem> items = new ArrayList<DiscoServerItem>();
items.add(new DiscoServerItem() { items.add(new DiscoServerItem() {
public String getJID() { public String getJID() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment