Author: toad
Date: 2007-07-13 18:53:09 +0000 (Fri, 13 Jul 2007)
New Revision: 14088

Modified:
   trunk/freenet/src/freenet/node/OpennetManager.java
Log:
Fix ArrayIndexOutOfBoundsException when all nodes locked

Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2007-07-13 18:48:00 UTC 
(rev 14087)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2007-07-13 18:53:09 UTC 
(rev 14088)
@@ -209,17 +209,18 @@
                                peersLRU.remove(toDrop);
                                dropList.add(toDrop);
                        }
-                       if(!dropList.isEmpty())
+                       if(ret) {
                                timeLastDropped = System.currentTimeMillis();
-                       if(nodeToAddNow != null) {
-                               if(!node.peers.addPeer(nodeToAddNow)) {
-                                       // Can't add it, already present (some 
sort of race condition)
-                                       PeerNode readd = (PeerNode) 
dropList.remove(dropList.size()-1);
-                                       peersLRU.pushLeast(readd);
-                                       ret = false;
-                                       Logger.error(this, "Could not add 
opennet peer "+nodeToAddNow+" because already in list");
-                               } else {
-                                       Logger.error(this, "Added opennet peer 
"+nodeToAddNow+" after clearing "+dropList.size()+" items");                    
                 
+                               if(nodeToAddNow != null) {
+                                       if(!node.peers.addPeer(nodeToAddNow)) {
+                                               // Can't add it, already 
present (some sort of race condition)
+                                               PeerNode readd = (PeerNode) 
dropList.remove(dropList.size()-1);
+                                               peersLRU.pushLeast(readd);
+                                               ret = false;
+                                               Logger.error(this, "Could not 
add opennet peer "+nodeToAddNow+" because already in list");
+                                       } else {
+                                               Logger.error(this, "Added 
opennet peer "+nodeToAddNow+" after clearing "+dropList.size()+" items");       
                              
+                                       }
                                }
                        }
                }


Reply via email to