Author: toad
Date: 2007-09-26 09:48:42 +0000 (Wed, 26 Sep 2007)
New Revision: 15311

Modified:
   trunk/freenet/src/freenet/node/PeerManager.java
Log:
Ask opennet to remove it even if we have already removed it

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2007-09-26 09:47:12 UTC 
(rev 15310)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2007-09-26 09:48:42 UTC 
(rev 15311)
@@ -271,8 +271,8 @@
        }

     private boolean removePeer(PeerNode pn) {
+               boolean isInPeers = false;
        synchronized(this) {
-               boolean isInPeers = false;
                for(int i=0;i<myPeers.length;i++) {
                        if(myPeers[i] == pn) isInPeers=true;
                }
@@ -284,34 +284,37 @@
                }
                if(pn instanceof DarknetPeerNode)
                        ((DarknetPeerNode)pn).removeExtraPeerDataDir();
-               if(!isInPeers) return false;
+               
+               if(isInPeers) {

-               // removing from connectedPeers
-               ArrayList a = new ArrayList();
-               for(int i=0;i<myPeers.length;i++) {
-                       if((myPeers[i]!=pn) && myPeers[i].isRoutable())
-                               a.add(myPeers[i]);
-               }
-               
-               PeerNode[] newConnectedPeers = new PeerNode[a.size()];
-               newConnectedPeers = (PeerNode[]) a.toArray(newConnectedPeers);
-               connectedPeers = newConnectedPeers;
-               
-               // removing from myPeers
-               PeerNode[] newMyPeers = new PeerNode[myPeers.length-1];
-               int positionInNewArray = 0;
-               for(int i=0;i<myPeers.length;i++) {
-                       if(myPeers[i]!=pn){
-                               newMyPeers[positionInNewArray] = myPeers[i];
-                               positionInNewArray++;
+                       // removing from connectedPeers
+                       ArrayList a = new ArrayList();
+                       for(int i=0;i<myPeers.length;i++) {
+                               if((myPeers[i]!=pn) && myPeers[i].isRoutable())
+                                       a.add(myPeers[i]);
                        }
+                       
+                       PeerNode[] newConnectedPeers = new PeerNode[a.size()];
+                       newConnectedPeers = (PeerNode[]) 
a.toArray(newConnectedPeers);
+                       connectedPeers = newConnectedPeers;
+                       
+                       // removing from myPeers
+                       PeerNode[] newMyPeers = new PeerNode[myPeers.length-1];
+                       int positionInNewArray = 0;
+                       for(int i=0;i<myPeers.length;i++) {
+                               if(myPeers[i]!=pn){
+                                       newMyPeers[positionInNewArray] = 
myPeers[i];
+                                       positionInNewArray++;
+                               }
+                       }
+                       myPeers = newMyPeers;
+                       
+                       Logger.normal(this, "Removed "+pn);
                }
-               myPeers = newMyPeers;
-               
-               Logger.normal(this, "Removed "+pn);
        }
        pn.onRemove();
-        updatePMUserAlert();
+       if(isInPeers)
+               updatePMUserAlert();
         return true;
     }



Reply via email to