Author: toad
Date: 2007-02-14 19:07:23 +0000 (Wed, 14 Feb 2007)
New Revision: 11786

Modified:
   trunk/freenet/src/freenet/node/fcp/ClientGet.java
   trunk/freenet/src/freenet/node/fcp/ClientPut.java
Log:
Don't restart completed requests on startup!
Also fix synchronization.

Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java   2007-02-14 18:47:44 UTC 
(rev 11785)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java   2007-02-14 19:07:23 UTC 
(rev 11786)
@@ -272,15 +272,27 @@

        public void start() {
                try {
+                       synchronized(this) {
+                               if(finished) return;
+                       }
                        getter.start();
-                       started = true;
                        if(persistenceType != PERSIST_CONNECTION && !finished) {
                                FCPMessage msg = persistentTagMessage();
                                client.queueClientRequestMessage(msg, 0);
                        }
+                       synchronized(this) {
+                               started = true;
+                       }
                } catch (FetchException e) {
-                       started = true;
+                       synchronized(this) {
+                               started = true;
+                       } // before the failure handler
                        onFailure(e, null);
+               } catch (Throwable t) {
+                       synchronized(this) {
+                               started = true;
+                       }
+                       onFailure(new 
FetchException(FetchException.INTERNAL_ERROR, t), null);
                }
        }


Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java   2007-02-14 18:47:44 UTC 
(rev 11785)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java   2007-02-14 19:07:23 UTC 
(rev 11786)
@@ -287,17 +287,28 @@
        public void start() {
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Starting "+this+" : "+identifier);
-               if(finished) return;
+               synchronized(this) {
+                       if(finished) return;
+               }
                try {
                        putter.start(earlyEncode);
-                       started = true;
                        if(persistenceType != PERSIST_CONNECTION && !finished) {
                                FCPMessage msg = persistentTagMessage();
                                client.queueClientRequestMessage(msg, 0);
                        }
+                       synchronized(this) {
+                               started = true;
+                       }
                } catch (InserterException e) {
-                       started = true;
+                       synchronized(this) {
+                               started = true;
+                       }
                        onFailure(e, null);
+               } catch (Throwable t) {
+                       synchronized(this) {
+                               started = true;
+                       }
+                       onFailure(new 
InserterException(InserterException.INTERNAL_ERROR, t, null), null);
                }
        }



Reply via email to