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);
}
}