Author: zothar
Date: 2006-07-14 21:36:31 +0000 (Fri, 14 Jul 2006)
New Revision: 9612

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
The last of the PeerNode locking consistency changes according to lint4j

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-07-14 21:31:28 UTC 
(rev 9611)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-07-14 21:36:31 UTC 
(rev 9612)
@@ -320,7 +320,7 @@
                 throw new FSParseException(e1);
         }
         if(nominalPeer.isEmpty()) {
-               Logger.normal(this, "No IP addresses found for identity 
'"+Base64.encode(identity)+"', possibly at location 
'"+Double.toString(currentLocation.getValue())+"' with name '"+myName+"'");
+               Logger.normal(this, "No IP addresses found for identity 
'"+Base64.encode(identity)+"', possibly at location 
'"+Double.toString(currentLocation.getValue())+"' with name '"+getName()+"'");
                detectedPeer = null;
         } else {
                detectedPeer = (Peer) nominalPeer.firstElement();
@@ -476,12 +476,14 @@
                Logger.error(this, "Couldn't parse ARK info for "+this+": "+e, 
e);
         }

-        if(ark != null) {
-               if((myARK == null) || ((myARK != ark) && !myARK.equals(ark))) {
-                       myARK = ark;
-                       return true;
-               }
-        }
+               synchronized(this) {
+                       if(ark != null) {
+                               if((myARK == null) || ((myARK != ark) && 
!myARK.equals(ark))) {
+                                       myARK = ark;
+                                       return true;
+                               }
+                       }
+               }
         return false;
        }

@@ -494,18 +496,18 @@
     /**
      * Get my low-level address
      */
-    public Peer getDetectedPeer() {
+    public synchronized Peer getDetectedPeer() {
         return detectedPeer;
     }

-    public Peer getPeer(){
+    public synchronized Peer getPeer(){
        return detectedPeer;
     }

     /**
      * Returns an array with the advertised addresses and the detected one
      */
-    protected Peer[] getHandshakeIPs(){
+    protected synchronized Peer[] getHandshakeIPs(){
         return handshakeIPs;
     }

@@ -546,11 +548,11 @@
           if(ignoreHostnames) {
             // Don't do a DNS request on the first cycle through PeerNodes by 
DNSRequest
             // upon startup (I suspect the following won't do anything, but 
just in case)
-            Logger.debug(this, "updateHandshakeIPs: calling getAddress(false) 
on Peer '"+localHandshakeIPs[i]+"' for PeerNode '"+getPeer()+"' named 
'"+myName+"' ("+ignoreHostnames+")");
+            Logger.debug(this, "updateHandshakeIPs: calling getAddress(false) 
on Peer '"+localHandshakeIPs[i]+"' for PeerNode '"+getPeer()+"' named 
'"+getName()+"' ("+ignoreHostnames+")");
             localHandshakeIPs[i].getAddress(false);
           } else {
             // Actually do the DNS request for the member Peer of 
localHandshakeIPs
-            Logger.debug(this, "updateHandshakeIPs: calling 
getHandshakeAddress() on Peer '"+localHandshakeIPs[i]+"' for PeerNode 
'"+getPeer()+"' named '"+myName+"' ("+ignoreHostnames+")");
+            Logger.debug(this, "updateHandshakeIPs: calling 
getHandshakeAddress() on Peer '"+localHandshakeIPs[i]+"' for PeerNode 
'"+getPeer()+"' named '"+getName()+"' ("+ignoreHostnames+")");
             localHandshakeIPs[i].getHandshakeAddress();
           }
         }
@@ -563,14 +565,19 @@
       */
     public void maybeUpdateHandshakeIPs(boolean ignoreHostnames) {
        long now = System.currentTimeMillis();
-       if((now - lastAttemptedHandshakeIPUpdateTime) < (5*60*1000)) {  // 5 
minutes
-               //Logger.minor(this, "Looked up recently (detectedPeer = 
"+detectedPeer + " : "+((detectedPeer == null) ? "" : 
detectedPeer.getAddress(false).toString()));
-               return;  // 5 minutes FIXME
-       }
-       // We want to come back right away for DNS requesting if this is our 
first time through
-       if(!ignoreHostnames)
-               lastAttemptedHandshakeIPUpdateTime = now;
-       Logger.minor(this, "Updating handshake IPs for peer '"+getPeer()+"' 
named '"+myName+"' ("+ignoreHostnames+")");
+       Peer localDetectedPeer = null;
+       synchronized(this) {
+               localDetectedPeer = detectedPeer;
+               if((now - lastAttemptedHandshakeIPUpdateTime) < (5*60*1000)) {  
// 5 minutes
+                       //Logger.minor(this, "Looked up recently 
(localDetectedPeer = "+localDetectedPeer + " : "+((localDetectedPeer == null) ? 
"" : localDetectedPeer.getAddress(false).toString()));
+                       return;  // 5 minutes FIXME
+               }
+                       // We want to come back right away for DNS requesting 
if this is our first time through
+                       if(!ignoreHostnames) {
+                               lastAttemptedHandshakeIPUpdateTime = now;
+                       }
+           }
+       Logger.minor(this, "Updating handshake IPs for peer '"+getPeer()+"' 
named '"+getName()+"' ("+ignoreHostnames+")");
        Peer[] localHandshakeIPs;
        Peer[] myNominalPeer;

@@ -580,7 +587,7 @@
        }

        if(myNominalPeer.length == 0) {
-               if(detectedPeer == null) {
+               if(localDetectedPeer == null) {
                        localHandshakeIPs = null;
                        synchronized(this) {
                                handshakeIPs = localHandshakeIPs;
@@ -588,7 +595,7 @@
                        Logger.minor(this, "1: maybeUpdateHandshakeIPs got a 
result of: "+handshakeIPsToString());
                        return;
                }
-               localHandshakeIPs = new Peer[] { detectedPeer };
+               localHandshakeIPs = new Peer[] { localDetectedPeer };
                localHandshakeIPs = updateHandshakeIPs(localHandshakeIPs, 
ignoreHostnames);
                synchronized(this) {
                        handshakeIPs = localHandshakeIPs;
@@ -602,15 +609,18 @@
        Peer[] nodePeers = node.getPrimaryIPAddress();
 //     FreenetInetAddress nodeAddr = node.getPrimaryIPAddress();

-       Vector peers = new Vector(nominalPeer);
+       Vector peers = null;
+       synchronized(this) {
+               peers = new Vector(nominalPeer);
+       }

        boolean addedLocalhost = false;
        Peer detectedDuplicate = null;
        for(int i=0;i<myNominalPeer.length;i++) {
                Peer p = myNominalPeer[i];
                if(p == null) continue;
-               if(detectedPeer != null) {
-                       if((p != detectedPeer) && p.equals(detectedPeer)) {
+               if(localDetectedPeer != null) {
+                       if((p != localDetectedPeer) && 
p.equals(localDetectedPeer)) {
                                // Equal but not the same object; need to 
update the copy.
                                detectedDuplicate = p;
                        }
@@ -635,11 +645,11 @@
        localHandshakeIPs = updateHandshakeIPs(localHandshakeIPs, 
ignoreHostnames);
        synchronized(this) {
                handshakeIPs = localHandshakeIPs;
-               if((detectedDuplicate != null) && 
detectedDuplicate.equals(detectedPeer)) {
-                       detectedPeer = detectedDuplicate;
+               if((detectedDuplicate != null) && 
detectedDuplicate.equals(localDetectedPeer)) {
+                       localDetectedPeer = detectedPeer = detectedDuplicate;
                }
        }
-       Logger.minor(this, "3: detectedPeer = "+detectedPeer+" 
("+detectedPeer.getAddress(false)+")");
+       Logger.minor(this, "3: detectedPeer = "+localDetectedPeer+" 
("+localDetectedPeer.getAddress(false)+")");
        Logger.minor(this, "3: maybeUpdateHandshakeIPs got a result of: 
"+handshakeIPsToString());
        return;
     }
@@ -647,7 +657,7 @@
     /**
      * What is my current keyspace location?
      */
-    public Location getLocation() {
+    public synchronized Location getLocation() {
         return currentLocation;
     }

@@ -662,7 +672,7 @@
      * Is this peer too old for us? (i.e. our lastGoodVersion is newer than 
it's version)
      * 
      */
-    public boolean isVerifiedIncompatibleOlderVersion() {
+    public synchronized boolean isVerifiedIncompatibleOlderVersion() {
         return verifiedIncompatibleOlderVersion;
     }

@@ -670,7 +680,7 @@
      * Is this peer too new for us? (i.e. our version is older than it's 
lastGoodVersion)
      * 
      */
-    public boolean isVerifiedIncompatibleNewerVersion() {
+    public synchronized boolean isVerifiedIncompatibleNewerVersion() {
         return verifiedIncompatibleNewerVersion;
     }

@@ -684,10 +694,10 @@
         return isConnected() && isRoutingCompatible();
     }

-    public boolean isRoutingCompatible(){
+    public synchronized boolean isRoutingCompatible(){
        return isRoutable;
     }
-    public boolean isConnected(){
+    public synchronized boolean isConnected(){
        return isConnected;
     }

@@ -718,14 +728,14 @@
     /**
      * @return The last time we received a packet.
      */
-    public long lastReceivedPacketTime() {
+    public synchronized long lastReceivedPacketTime() {
         return timeLastReceivedPacket;
     }

     /**
      * @return The time this PeerNode was added to the node
      */
-    public long getPeerAddedTime() {
+    public synchronized long getPeerAddedTime() {
         return peerAddedTime;
     }

@@ -753,7 +763,9 @@
             // DO NOT clear trackers, so can still receive.
         }
         node.lm.lostOrRestartedNode(this);
-        sendHandshakeTime = System.currentTimeMillis();
+        synchronized(this) {
+                       sendHandshakeTime = now;
+           }
     }

     public void forceDisconnect() {
@@ -839,12 +851,14 @@
      */
     public boolean shouldSendHandshake() {
         long now = System.currentTimeMillis();
-        return (!isConnected()) &&
+        synchronized(this) {
+               return (!isConnected()) &&
                                (!isDisabled) &&  // don't connect to disabled 
peers
                                (!isListenOnly) &&  // don't send handshake 
requests to isListenOnly peers
                 (handshakeIPs != null) &&
                 (now > sendHandshakeTime) &&
                 !(hasLiveHandshake(now));
+               }
     }

     /**
@@ -852,7 +866,10 @@
      * @param now The current time.
      */
     public boolean hasLiveHandshake(long now) {
-        DiffieHellmanContext c = ctx;
+        DiffieHellmanContext c = null;
+        synchronized(this) {
+               c = ctx;
+               }
         if(c != null)
             Logger.minor(this, "Last used: "+(now - c.lastUsedTime()));
         return !((c == null) || (now - c.lastUsedTime() > 
Node.HANDSHAKE_TIMEOUT));
@@ -862,6 +879,7 @@

     private void calcNextHandshake(boolean couldSendHandshake) {
         long now = System.currentTimeMillis();
+        boolean fetchARKFlag = false;
         synchronized(this) {
             if(verifiedIncompatibleOlderVersion || 
verifiedIncompatibleNewerVersion) { 
                 // Let them know we're here, but have no hope of connecting
@@ -880,14 +898,15 @@
                 handshakeIPs = null;
             }
             this.handshakeCount++;
+               fetchARKFlag = ((handshakeCount == MAX_HANDSHAKE_COUNT) && 
!(verifiedIncompatibleOlderVersion || verifiedIncompatibleNewerVersion));
         }
         // Don't fetch ARKs for peers we have verified (through handshake) to 
be incompatible with us
-        if((handshakeCount == MAX_HANDSHAKE_COUNT) && 
!(verifiedIncompatibleOlderVersion || verifiedIncompatibleNewerVersion)) {
+        if(fetchARKFlag) {
                        long arkFetcherStartTime1 = System.currentTimeMillis();
                        arkFetcher.queue();
                        long arkFetcherStartTime2 = System.currentTimeMillis();
                        if((arkFetcherStartTime2 - arkFetcherStartTime1) > 500) 
{
-                               Logger.normal(this, "arkFetcherStartTime2 is 
more than half a second after arkFetcherStartTime1 ("+(arkFetcherStartTime2 - 
arkFetcherStartTime1)+") working on "+myName);
+                               Logger.normal(this, "arkFetcherStartTime2 is 
more than half a second after arkFetcherStartTime1 ("+(arkFetcherStartTime2 - 
arkFetcherStartTime1)+") working on "+getName());
                        }
         }
     }
@@ -972,7 +991,9 @@
      * Update the Location to a new value.
      */
     public void updateLocation(double newLoc) {
-        currentLocation.setValue(newLoc);
+               synchronized(this) {
+                       currentLocation.setValue(newLoc);
+               }
         node.peers.writePeers();
     }

@@ -1007,7 +1028,7 @@
        setDetectedPeer(newPeer);
     }

-    private void setDetectedPeer(Peer newPeer) {
+    private synchronized void setDetectedPeer(Peer newPeer) {
        // Only clear lastAttemptedHandshakeIPUpdateTime if we have a new IP.
        // Also, we need to call .equals() to propagate any DNS lookups that 
have been done if the two have the same domain.
        if((newPeer != null) && ((detectedPeer == null) || 
!detectedPeer.equals(newPeer))) {
@@ -1020,7 +1041,7 @@
      * @return The current primary KeyTracker, or null if we
      * don't have one.
      */
-    public KeyTracker getCurrentKeyTracker() {
+    public synchronized KeyTracker getCurrentKeyTracker() {
         return currentTracker;
     }

@@ -1028,7 +1049,7 @@
      * @return The previous primary KeyTracker, or null if we
      * don't have one.
      */
-    public KeyTracker getPreviousKeyTracker() {
+    public synchronized KeyTracker getPreviousKeyTracker() {
         return previousTracker;
     }

@@ -1037,14 +1058,14 @@
      * don't have one. The caller MUST call verified(KT) if a
      * decrypt succeeds with this KT.
      */
-    public KeyTracker getUnverifiedKeyTracker() {
+    public synchronized KeyTracker getUnverifiedKeyTracker() {
         return unverifiedTracker;
     }

     /**
      * @return short version of toString()
      */
-    public String shortToString() {
+    public synchronized String shortToString() {
         return 
super.toString()+"@"+detectedPeer+"@"+HexUtil.bytesToHex(identity);
     }

@@ -1084,11 +1105,11 @@
         randomizeMaxTimeBetweenPacketSends();
     }

-    public DiffieHellmanContext getDHContext() {
+    public synchronized DiffieHellmanContext getDHContext() {
         return ctx;
     }

-    public void setDHContext(DiffieHellmanContext ctx2) {
+    public synchronized void setDHContext(DiffieHellmanContext ctx2) {
         this.ctx = ctx2;
         Logger.minor(this, "setDHContext("+ctx2+") on "+this);
     }
@@ -1182,7 +1203,7 @@
                }
                if(!isConnected)
                        node.peers.disconnected(this);
-               Logger.normal(this, "Completed handshake with "+this+" on 
"+replyTo+" - current: "+currentTracker+" old: "+previousTracker+" unverified: 
"+unverifiedTracker+" bootID: "+thisBootID+" myName: "+myName);
+               Logger.normal(this, "Completed handshake with "+this+" on 
"+replyTo+" - current: "+currentTracker+" old: "+previousTracker+" unverified: 
"+unverifiedTracker+" bootID: "+thisBootID+" getName(): "+getName());
                try {
                        receivedPacket(unverified);
                } catch (NotConnectedException e) {
@@ -1215,7 +1236,7 @@
      */
     private void sendInitialMessages() {
         Message locMsg = 
DMT.createFNPLocChangeNotification(node.lm.loc.getValue());
-        Message ipMsg = DMT.createFNPDetectedIPAddress(detectedPeer);
+        Message ipMsg = DMT.createFNPDetectedIPAddress(getDetectedPeer());

         try {
                if(isRoutable())
@@ -1255,19 +1276,19 @@
         node.peers.addConnectedPeer(this);
     }

-    private boolean invalidVersion() {
+    private synchronized boolean invalidVersion() {
         return bogusNoderef || (!Version.checkGoodVersion(version));
     }

-    private boolean reverseInvalidVersion() {
+    private synchronized boolean reverseInvalidVersion() {
         return bogusNoderef || 
(!Version.checkArbitraryGoodVersion(Version.getVersionString(),lastGoodVersion));
     }

     public boolean publicInvalidVersion() {
-        return !Version.checkGoodVersion(version);
+        return !Version.checkGoodVersion(getVersion());
     }

-    public boolean publicReverseInvalidVersion() {
+    public synchronized boolean publicReverseInvalidVersion() {
         return 
!Version.checkArbitraryGoodVersion(Version.getVersionString(),lastGoodVersion);
     }

@@ -1473,29 +1494,30 @@
     }

     public String getStatus() {
-        return getPeerNodeStatusString() + " " + getPeer()+" "+myName+" 
"+currentLocation.getValue()+" "+getVersion()+" backoff: 
"+getRoutingBackoffLength()+" ("+(Math.max(getRoutingBackedOffUntil() - 
System.currentTimeMillis(),0))+")";
+        return getPeerNodeStatusString() + " " + getPeer()+" "+getName()+" 
"+getLocation().getValue()+" "+getVersion()+" backoff: 
"+getRoutingBackoffLength()+" ("+(Math.max(getRoutingBackedOffUntil() - 
System.currentTimeMillis(),0))+")";
     }

     public String getTMCIPeerInfo() {
-                   long now = System.currentTimeMillis();
-        int idle = (int) ((now - timeLastReceivedPacket) / 1000);
-        if((peerNodeStatus == Node.PEER_NODE_STATUS_NEVER_CONNECTED) && 
(peerAddedTime > 1))
-            idle = (int) ((now - peerAddedTime) / 1000);
-        return 
myName+"\t"+getPeer()+"\t"+getIdentityString()+"\t"+currentLocation.getValue()+"\t"+getPeerNodeStatusString()+"\t"+idle;
+               long now = System.currentTimeMillis();
+        int idle = -1;
+        synchronized(this) {
+               idle = (int) ((now - timeLastReceivedPacket) / 1000);
+        }
+        if((getPeerNodeStatus() == Node.PEER_NODE_STATUS_NEVER_CONNECTED) && 
(getPeerAddedTime() > 1))
+            idle = (int) ((now - getPeerAddedTime()) / 1000);
+        return 
getName()+"\t"+getPeer()+"\t"+getIdentityString()+"\t"+getLocation().getValue()+"\t"+getPeerNodeStatusString()+"\t"+idle;
     }

     public String getFreevizOutput() {
-       return
-       
-                       getStatus()+"|"+ Base64.encode(identity);
+       return getStatus()+"|"+ Base64.encode(identity);
     }

-       public String getVersion(){
+       public synchronized String getVersion(){
                return version;
        }

        public String getSimpleVersion(){
-               return String.valueOf(Version.getArbitraryBuildNumber(version));
+               return 
String.valueOf(Version.getArbitraryBuildNumber(getVersion()));
        }

     /**
@@ -1512,7 +1534,7 @@
     /**
      * Export metadata about the node as a SimpleFieldSet
      */
-    public SimpleFieldSet exportMetadataFieldSet() {
+    public synchronized SimpleFieldSet exportMetadataFieldSet() {
        SimpleFieldSet fs = new SimpleFieldSet(true);
        if(detectedPeer != null)
                fs.put("detected.udp", detectedPeer.toString());
@@ -1535,29 +1557,31 @@
      * Export volatile data about the node as a SimpleFieldSet
      */
     public SimpleFieldSet exportVolatileFieldSet() {
-       SimpleFieldSet fs = new SimpleFieldSet(true);
-               fs.put("averagePingTime", Double.toString(averagePingTime()));
+               SimpleFieldSet fs = new SimpleFieldSet(true);
                long now = System.currentTimeMillis();
-               long idle = now - lastReceivedPacketTime();
-               if(idle > (60 * 1000)) {  // 1 minute
-                       fs.put("idle", Long.toString(idle));
+       synchronized(this) {
+                       fs.put("averagePingTime", 
Double.toString(averagePingTime()));
+                       long idle = now - lastReceivedPacketTime();
+                       if(idle > (60 * 1000)) {  // 1 minute
+                               fs.put("idle", Long.toString(idle));
+                       }
+                       fs.put("lastRoutingBackoffReason", 
getLastBackoffReason());
+                       long tempPeerAddedTime = getPeerAddedTime();
+                       if(tempPeerAddedTime > 1) {
+                               fs.put("peerAddedTime", 
Long.toString(tempPeerAddedTime));
+                       }
+                       fs.put("routingBackoffPercent", 
Double.toString(backedOffPercent.currentValue() * 100));
+                       fs.put("routingBackoff", 
Long.toString((Math.max(getRoutingBackedOffUntil() - now, 0))));
+                       fs.put("routingBackoffLength", 
Integer.toString(getRoutingBackoffLength()));
+                       fs.put("status", getPeerNodeStatusString());
                }
-               fs.put("lastRoutingBackoffReason", getLastBackoffReason());
-               long tempPeerAddedTime = getPeerAddedTime();
-               if(tempPeerAddedTime > 1) {
-                       fs.put("peerAddedTime", 
Long.toString(tempPeerAddedTime));
-               }
-               fs.put("routingBackoffPercent", 
Double.toString(backedOffPercent.currentValue() * 100));
-               fs.put("routingBackoff", 
Long.toString((Math.max(getRoutingBackedOffUntil() - now, 0))));
-               fs.put("routingBackoffLength", 
Integer.toString(getRoutingBackoffLength()));
-               fs.put("status", getPeerNodeStatusString());
-       return fs;
+               return fs;
        }

        /**
      * Export the peer's noderef as a SimpleFieldSet
      */
-    public SimpleFieldSet exportFieldSet() {
+    public synchronized SimpleFieldSet exportFieldSet() {
         SimpleFieldSet fs = new SimpleFieldSet(true);
         if(lastGoodVersion != null)
                fs.put("lastGoodVersion", lastGoodVersion);
@@ -1568,13 +1592,11 @@
         fs.put("location", Double.toString(currentLocation.getValue()));
         fs.put("testnet", Boolean.toString(testnetEnabled));
         fs.put("version", version);
-        fs.put("myName", myName);
+        fs.put("myName", getName());
         if(myARK != null) {
-               synchronized (this) {
-               // Decrement it because we keep the number we would like to 
fetch, not the last one fetched.
-               fs.put("ark.number", Long.toString(myARK.suggestedEdition-1));
-               fs.put("ark.pubURI", myARK.getBaseSSK().toString(false));       
                        
-                       }
+               // Decrement it because we keep the number we would like to 
fetch, not the last one fetched.
+               fs.put("ark.number", Long.toString(myARK.suggestedEdition - 1));
+               fs.put("ark.pubURI", myARK.getBaseSSK().toString(false));       
                        
         }
         return fs;
     }
@@ -1582,7 +1604,7 @@
     /**
      * @return The time at which we last connected (or reconnected).
      */
-    public long timeLastConnected() {
+    public synchronized long timeLastConnected() {
         return connectedTime;
     }

@@ -1685,18 +1707,20 @@
                synchronized(routingBackoffSync) {
                        localRoutingBackedOffUntil = routingBackedOffUntil;
                }
-               if(now > lastSampleTime) {
-                       if (now > localRoutingBackedOffUntil) {
-                               if (lastSampleTime > 
localRoutingBackedOffUntil) {
-                                       backedOffPercent.report(0.0);
+               synchronized(this) {
+                       if(now > lastSampleTime) {
+                               if (now > localRoutingBackedOffUntil) {
+                                       if (lastSampleTime > 
localRoutingBackedOffUntil) {
+                                               backedOffPercent.report(0.0);
+                                       } else {
+                                               
backedOffPercent.report((double)(localRoutingBackedOffUntil - 
lastSampleTime)/(double)(now - lastSampleTime));
+                                       }
                                } else {
-                                       
backedOffPercent.report((double)(localRoutingBackedOffUntil - 
lastSampleTime)/(double)(now - lastSampleTime));
+                                       backedOffPercent.report(1.0);
                                }
-                       } else {
-                               backedOffPercent.report(1.0);
                        }
+                       lastSampleTime = now;
                }
-               lastSampleTime = now;
        }

        /**
@@ -1706,6 +1730,7 @@
        public void localRejectedOverload(String reason) {
                Logger.minor(this, "Local rejected overload on "+this);
                long now = System.currentTimeMillis();
+               Peer peer = getPeer();
                synchronized(routingBackoffSync) {
                        reportBackoffStatus(now);
                        // Don't back off any further if we are already backed 
off
@@ -1722,9 +1747,9 @@
                                        reasonWrapper = " because of 
'"+reason+"'";
                                }

-                               Logger.minor(this, "Backing 
off"+reasonWrapper+": routingBackoffLength="+routingBackoffLength+", until 
"+x+"ms on "+getPeer());
+                               Logger.minor(this, "Backing 
off"+reasonWrapper+": routingBackoffLength="+routingBackoffLength+", until 
"+x+"ms on "+peer);
                        } else {
-                               Logger.minor(this, "Ignoring 
localRejectedOverload: "+(routingBackedOffUntil-now)+"ms remaining on routing 
backoff on "+getPeer());
+                               Logger.minor(this, "Ignoring 
localRejectedOverload: "+(routingBackedOffUntil-now)+"ms remaining on routing 
backoff on "+peer);
                        }
                }
        }
@@ -1735,16 +1760,17 @@
         */
        public void successNotOverload() {
                Logger.minor(this, "Success not overload on "+this);
+               Peer peer = getPeer();
                long now = System.currentTimeMillis();
                synchronized(routingBackoffSync) {
                        reportBackoffStatus(now);
                        // Don't un-backoff if still backed off
                        if(now > routingBackedOffUntil) {
                                routingBackoffLength = 
INITIAL_ROUTING_BACKOFF_LENGTH;
-                               Logger.minor(this, "Resetting routing backoff 
on "+getPeer());
+                               Logger.minor(this, "Resetting routing backoff 
on "+peer);
                                setPeerNodeStatus(now);
                        } else {
-                               Logger.minor(this, "Ignoring 
successNotOverload: "+(routingBackedOffUntil-now)+"ms remaining on routing 
backoff on "+getPeer());
+                               Logger.minor(this, "Ignoring 
successNotOverload: "+(routingBackedOffUntil-now)+"ms remaining on routing 
backoff on "+peer);
                        }
                }
        }
@@ -1824,7 +1850,7 @@
                return remoteDetectedPeer;
        }

-       public String getName() {
+       public synchronized String getName() {
                return myName;
        }

@@ -1852,7 +1878,7 @@
                lastRoutingBackoffReason = s;
        }

-       public boolean hasCompletedHandshake() {
+       public synchronized boolean hasCompletedHandshake() {
                return completedHandshake;
        }

@@ -1897,18 +1923,18 @@
        }

        //FIXME: maybe return a copy insteed
-       public Hashtable getLocalNodeSentMessagesToStatistic ()
+       public synchronized Hashtable getLocalNodeSentMessagesToStatistic ()
        {
                return localNodeSentMessageTypes;
        }

        //FIXME: maybe return a copy insteed
-       public Hashtable getLocalNodeReceivedMessagesFromStatistic ()
+       public synchronized Hashtable getLocalNodeReceivedMessagesFromStatistic 
()
        {
                return localNodeReceivedMessageTypes;
        }

-       USK getARK() {
+       synchronized USK getARK() {
                return myARK;
        }

@@ -1950,12 +1976,12 @@
                }
        }

-  public int getPeerNodeStatus() {
+  public synchronized int getPeerNodeStatus() {
                return peerNodeStatus;
   }

   public String getPeerNodeStatusString() {
-       int status = peerNodeStatus;
+       int status = getPeerNodeStatus();
        if(status == Node.PEER_NODE_STATUS_CONNECTED)
                return "CONNECTED";
        if(status == Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF)
@@ -1976,7 +2002,7 @@
   }

   public String getPeerNodeStatusCSSClassName() {
-       int status = peerNodeStatus;
+       int status = getPeerNodeStatus();
        if(status == Node.PEER_NODE_STATUS_CONNECTED)
                return "peer_connected";
        if(status == Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF)
@@ -2046,19 +2072,23 @@
                return arkFetcher.isFetching();
        }

-       public int getHandshakeCount() {
+       public synchronized int getHandshakeCount() {
                return handshakeCount;
        }

        public void enablePeer() {
-               isDisabled = false;
+               synchronized(this) {
+                       isDisabled = false;
+               }
                setPeerNodeStatus(System.currentTimeMillis());
         node.peers.writePeers();
        }

        public void disablePeer() {
-               isDisabled = true;
-               if(isConnected) {
+               synchronized(this) {
+                       isDisabled = true;
+               }
+               if(isConnected()) {
                        forceDisconnect();
                }
        arkFetcher.stop();
@@ -2066,17 +2096,19 @@
         node.peers.writePeers();
        }

-       public boolean isDisabled() {
+       public synchronized boolean isDisabled() {
                return isDisabled;
        }

        public void setListenOnly(boolean setting) {
-               isListenOnly = setting;
+               synchronized(this) {
+                       isListenOnly = setting;
+               }
                setPeerNodeStatus(System.currentTimeMillis());
         node.peers.writePeers();
        }

-       public boolean isListenOnly() {
+       public synchronized boolean isListenOnly() {
                return isListenOnly;
        }

@@ -2097,7 +2129,7 @@
         Logger.normal(this, "Invalidated "+this);
        }

-       public boolean allowLocalAddresses() {
+       public synchronized boolean allowLocalAddresses() {
                return allowLocalAddresses;
        }
 }


Reply via email to