Author: toad
Date: 2007-10-26 19:47:23 +0000 (Fri, 26 Oct 2007)
New Revision: 15598

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
waitForSend can throw NotConnectedException

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2007-10-26 19:13:41 UTC 
(rev 15597)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2007-10-26 19:47:23 UTC 
(rev 15598)
@@ -1217,12 +1217,16 @@
     private class SyncMessageCallback implements AsyncMessageCallback {

        private boolean done = false;
+       private boolean disconnected = false;

-               public synchronized void waitForSend(long maxWaitInterval) {
+               public synchronized void waitForSend(long maxWaitInterval) 
throws NotConnectedException {
                        long now = System.currentTimeMillis();
                        long end = now + maxWaitInterval;
                        while((now = System.currentTimeMillis()) < end) {
-                               if(done) return;
+                               if(done) {
+                                       if(disconnected) throw new 
NotConnectedException();
+                                       return;
+                               }
                                int waitTime = (int)(Math.min(end - now, 
Integer.MAX_VALUE));
                                try {
                                        wait(waitTime);
@@ -1246,6 +1250,7 @@
                public void disconnected() {
                        synchronized(this) {
                                done = true;
+                               disconnected = true;
                                notifyAll();
                        }
                }


Reply via email to