Author: nextgens
Date: 2006-07-09 21:32:21 +0000 (Sun, 09 Jul 2006)
New Revision: 9527

Modified:
   trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
   trunk/freenet/src/freenet/node/Node.java
Log:
Consistent locking in MyARKInserter and BaseSingleFileFetcher

Modified: trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2006-07-09 21:21:37 UTC (rev 9526)
+++ trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2006-07-09 21:32:21 UTC (rev 9527)
@@ -12,7 +12,7 @@
 public abstract class BaseSingleFileFetcher implements SendableGet {

        final ClientKey key;
-       protected boolean cancelled;
+       private boolean cancelled;
        final int maxRetries;
        private int retryCount;
        final FetcherContext ctx;
@@ -32,9 +32,11 @@

        /** Do the request, blocking. Called by RequestStarter. */
        public void send(Node node) {
-               if(cancelled) {
-                       onFailure(new 
LowLevelGetException(LowLevelGetException.CANCELLED));
-                       return;
+               synchronized (this) {
+                       if(cancelled) {
+                               onFailure(new 
LowLevelGetException(LowLevelGetException.CANCELLED));
+                               return;
+                       }       
                }
                // Do we need to support the last 3?
                ClientKeyBlock block;

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-07-09 21:21:37 UTC (rev 
9526)
+++ trunk/freenet/src/freenet/node/Node.java    2006-07-09 21:32:21 UTC (rev 
9527)
@@ -189,11 +189,13 @@
                                return true; // no point inserting
                        }
                        Peer[] p = getPrimaryIPAddress();
-                       if(lastInsertedPeers != null) {
-                               if(p.length != lastInsertedPeers.length) return 
true;
-                               for(int i=0;i<p.length;i++)
-                                       
if(!p[i].strictEquals(lastInsertedPeers[i]))
-                                               return true;
+                       synchronized (this) {
+                               if(lastInsertedPeers != null) {
+                                       if(p.length != 
lastInsertedPeers.length) return true;
+                                       for(int i=0;i<p.length;i++)
+                                               
if(!p[i].strictEquals(lastInsertedPeers[i]))
+                                                       return true;
+                               }
                        }
                        return false;
                }
@@ -226,30 +228,32 @@

                        Logger.minor(this, "Inserting ARK: "+uri);

-                       inserter = new ClientPutter(this, b, uri,
-                                       new ClientMetadata("text/plain") /* it 
won't quite fit in an SSK anyway */, 
-                                       
Node.this.makeClient((short)0).getInserterContext(),
-                                       chkPutScheduler, sskPutScheduler, 
RequestStarter.INTERACTIVE_PRIORITY_CLASS, false, false, this);
-                       
-                       try {
-                               inserter.start();
-                               if(fs.get("physical.udp") == null)
-                                       lastInsertedPeers = null;
-                               else {
-                                       try {
-                                               String[] all = 
fs.getAll("physical.udp");
-                                               Peer[] peers = new 
Peer[all.length];
-                                               for(int i=0;i<all.length;i++)
-                                                       peers[i] = new 
Peer(all[i], false);
-                                               lastInsertedPeers = peers;
-                                       } catch (PeerParseException e1) {
-                                               Logger.error(this, "Error 
parsing own ref: "+e1+" : "+fs.get("physical.udp"), e1);
-                                       } catch (UnknownHostException e1) {
-                                               Logger.error(this, "Error 
parsing own ref: "+e1+" : "+fs.get("physical.udp"), e1);
+                       synchronized (this) {
+                               inserter = new ClientPutter(this, b, uri,
+                                               new 
ClientMetadata("text/plain") /* it won't quite fit in an SSK anyway */, 
+                                               
Node.this.makeClient((short)0).getInserterContext(),
+                                               chkPutScheduler, 
sskPutScheduler, RequestStarter.INTERACTIVE_PRIORITY_CLASS, false, false, this);
+
+                               try {
+                                       inserter.start();
+                                       if(fs.get("physical.udp") == null)
+                                               lastInsertedPeers = null;
+                                       else {
+                                               try {
+                                                       String[] all = 
fs.getAll("physical.udp");
+                                                       Peer[] peers = new 
Peer[all.length];
+                                                       for(int 
i=0;i<all.length;i++)
+                                                               peers[i] = new 
Peer(all[i], false);
+                                                       lastInsertedPeers = 
peers;
+                                               } catch (PeerParseException e1) 
{
+                                                       Logger.error(this, 
"Error parsing own ref: "+e1+" : "+fs.get("physical.udp"), e1);
+                                               } catch (UnknownHostException 
e1) {
+                                                       Logger.error(this, 
"Error parsing own ref: "+e1+" : "+fs.get("physical.udp"), e1);
+                                               }
                                        }
+                               } catch (InserterException e) {
+                                       onFailure(e, inserter);
                                }
-                       } catch (InserterException e) {
-                               onFailure(e, inserter);
                        }
                }



Reply via email to