diff --git a/router/java/src/org/cybergarage/upnp/ControlPoint.java b/router/java/src/org/cybergarage/upnp/ControlPoint.java
index f1d56f44bc303a301471ba87a24e11be5ecbe65b..d66209f974fe6382fd357f2f0be0a09fee041c9e 100644
--- a/router/java/src/org/cybergarage/upnp/ControlPoint.java
+++ b/router/java/src/org/cybergarage/upnp/ControlPoint.java
@@ -276,7 +276,14 @@ public class ControlPoint implements HTTPRequestListener
 	{
 		int nRoots = devNodeList.size();
 		for (int n=0; n<nRoots; n++) {
-			Node rootNode = devNodeList.getNode(n);
+			// AIOOB was thrown from here, maybe would be better to
+			// copy the list before traversal?
+			Node rootNode;
+			try {
+				rootNode = devNodeList.getNode(n);
+			} catch (ArrayIndexOutOfBoundsException aioob) {
+				break;
+			}
 			Device dev = getDevice(rootNode);
 			if (dev == null)
 				continue;