Author: toad
Date: 2008-01-22 22:37:28 +0000 (Tue, 22 Jan 2008)
New Revision: 17196

Modified:
   trunk/freenet/src/freenet/node/RequestHandler.java
Log:
Don't wait for opennet on-thread

Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java  2008-01-22 22:37:14 UTC 
(rev 17195)
+++ trunk/freenet/src/freenet/node/RequestHandler.java  2008-01-22 22:37:28 UTC 
(rev 17196)
@@ -194,6 +194,20 @@
                }
        }

+       private void waitAndFinishCHKTransferOffThread() {
+               node.executor.execute(new Runnable() {
+                       public void run() {
+                               try {
+                                       waitAndFinishCHKTransfer();
+                               } catch (NotConnectedException e) {
+                                       //for byte logging, since the block is 
the 'terminal' message.
+                                       applyByteCounts();
+                                       unregisterRequestHandlerWithNode();
+                               }
+                       }
+               }, "Finish CHK transfer");
+       }
+       
        private void waitAndFinishCHKTransfer() throws NotConnectedException {
                if (logMINOR) Logger.minor(this, "Waiting for CHK transfer to 
finish");
                if(bt.getAsyncExitStatus()) {
@@ -267,7 +281,7 @@
                            reject = DMT.createFNPRejectedOverload(uid, true);
                                sendTerminal(reject);
                                } else {
-                                       waitAndFinishCHKTransfer();
+                                       waitAndFinishCHKTransferOffThread();
                                }
                        }
                                        return;
@@ -281,7 +295,7 @@
                                sendTerminal(reject);
                                } else {
                                                        //Verify fails after 
receive() is complete, so we might as well propagate it...
-                                       waitAndFinishCHKTransfer();
+                                       waitAndFinishCHKTransferOffThread();
                                }
                                                return;
                        }
@@ -297,7 +311,7 @@
                            reject = DMT.createFNPRejectedOverload(uid, true);
                                sendTerminal(reject);
                                } else {
-                                       waitAndFinishCHKTransfer();
+                                       waitAndFinishCHKTransferOffThread();
                                }
                                                return;
                        }


Reply via email to