Author: toad
Date: 2006-07-11 13:10:40 +0000 (Tue, 11 Jul 2006)
New Revision: 9559
Modified:
trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
Log:
nested locking is a root of all kinds of evils!
Modified: trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutBase.java 2006-07-11
12:56:47 UTC (rev 9558)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutBase.java 2006-07-11
13:10:40 UTC (rev 9559)
@@ -163,17 +163,22 @@
}
}
- private synchronized void
trySendGeneratedURIMessage(FCPConnectionOutputHandler handler) {
- FCPMessage msg = new URIGeneratedMessage(generatedURI,
identifier);
+ private void trySendGeneratedURIMessage(FCPConnectionOutputHandler
handler) {
+ FCPMessage msg;
+ synchronized(this) {
+ msg = new URIGeneratedMessage(generatedURI, identifier);
+ }
if(handler != null)
handler.queue(msg);
else
client.queueClientRequestMessage(msg, 0);
}
- private synchronized void trySendProgressMessage(FCPMessage msg, int
verbosity, FCPConnectionOutputHandler handler) {
- if(persistenceType != PERSIST_CONNECTION)
- progressMessage = msg;
+ private void trySendProgressMessage(FCPMessage msg, int verbosity,
FCPConnectionOutputHandler handler) {
+ synchronized(this) {
+ if(persistenceType != PERSIST_CONNECTION)
+ progressMessage = msg;
+ }
if(handler != null)
handler.queue(msg);
else
@@ -190,14 +195,20 @@
handler.queue(msg);
}
+ boolean generated = false;
+ FCPMessage msg = null;
+ boolean fin = false;
synchronized (this) {
- if(generatedURI != null)
- trySendGeneratedURIMessage(handler);
- if(progressMessage != null)
- handler.queue(progressMessage);
- if(finished)
- trySendFinalMessage(handler);
+ generated = generatedURI != null;
+ msg = progressMessage;
+ fin = finished;
}
+ if(generated)
+ trySendGeneratedURIMessage(handler);
+ if(msg != null)
+ handler.queue(msg);
+ if(fin)
+ trySendFinalMessage(handler);
}
protected abstract FCPMessage persistentTagMessage();