Author: toad
Date: 2008-07-30 18:47:13 +0000 (Wed, 30 Jul 2008)
New Revision: 21502

Modified:
   branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
Log:
Slightly more sane

Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java       
2008-07-30 18:33:09 UTC (rev 21501)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java       
2008-07-30 18:47:13 UTC (rev 21502)
@@ -299,23 +299,31 @@
         * @param container Either container or context is required for a 
persistent request.
         * @param context Can be null if container is not null.
         */
-       private void trySendProgressMessage(FCPMessage msg, int verbosity, 
FCPConnectionOutputHandler handler, ObjectContainer container, ClientContext 
context) {
-               synchronized(this) {
-                       if(persistenceType != PERSIST_CONNECTION)
-                               progressMessage = msg;
-               }
+       private void trySendProgressMessage(final FCPMessage msg, final int 
verbosity, final FCPConnectionOutputHandler handler, ObjectContainer container, 
ClientContext context) {
                if(persistenceType == PERSIST_FOREVER) {
                        if(container != null) {
+                               synchronized(this) {
+                                       if(persistenceType != 
PERSIST_CONNECTION)
+                                               progressMessage = msg;
+                               }
                                container.set(this);
                        } else {
                                context.jobRunner.queue(new DBJob() {

                                        public void run(ObjectContainer 
container, ClientContext context) {
-                                               
container.set(ClientPutBase.this);
+                                               
container.activate(ClientPutBase.this, 1);
+                                               trySendProgressMessage(msg, 
verbosity, handler, container, context);
+                                               
container.deactivate(ClientPutBase.this, 1);
                                        }

                                }, NativeThread.NORM_PRIORITY, false);
+                               return;
                        }
+               } else {
+                       synchronized(this) {
+                               if(persistenceType != PERSIST_CONNECTION)
+                                       progressMessage = msg;
+                       }
                }
                if(handler != null)
                        handler.queue(msg);


Reply via email to