Author: toad
Date: 2008-03-22 17:32:26 +0000 (Sat, 22 Mar 2008)
New Revision: 18724

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Also in disconnect().

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2008-03-22 17:29:50 UTC 
(rev 18723)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2008-03-22 17:32:26 UTC 
(rev 18724)
@@ -1138,6 +1138,7 @@
                node.peers.disconnected(this);
                boolean ret;
                KeyTracker cur, prev, unv;
+               MessageItem[] messagesTellDisconnected = null;
                synchronized(this) {
                        ret = isConnected;
                        // Force renegotiation.
@@ -1161,10 +1162,16 @@
                        }
                        if(dumpMessageQueue) {
                                synchronized(messagesToSendNow) {
+                                       messagesTellDisconnected = 
(MessageItem[]) messagesToSendNow.toArray(new 
MessageItem[messagesToSendNow.size()]);
                                        messagesToSendNow.clear();
                                }
                        }
                }
+               if(messagesTellDisconnected != null) {
+                       for(int i=0;i<messagesTellDisconnected.length;i++) {
+                               messagesTellDisconnected[i].onDisconnect();
+                       }
+               }
                if(cur != null) cur.disconnected();
                if(prev != null) prev.disconnected();
                if(unv != null) unv.disconnected();
@@ -1176,10 +1183,19 @@
                        node.getTicker().queueTimedJob(new Runnable() {
                                public void run() {
                                        if((!PeerNode.this.isConnected()) &&
-                                                       timeLastDisconnect == 
now)
+                                                       timeLastDisconnect == 
now) {
+                                               MessageItem[] 
messagesTellDisconnected = null;
                                                
synchronized(PeerNode.this.messagesToSendNow) {
+                                                       
messagesTellDisconnected = (MessageItem[]) messagesToSendNow.toArray(new 
MessageItem[messagesToSendNow.size()]);
                                                        
PeerNode.this.messagesToSendNow.clear();
                                                }
+                                               if(messagesTellDisconnected != 
null) {
+                                                       for(int 
i=0;i<messagesTellDisconnected.length;i++) {
+                                                               
messagesTellDisconnected[i].onDisconnect();
+                                                       }
+                                               }
+                                       }
+
                                }
                        }, CLEAR_MESSAGE_QUEUE_AFTER);
                }


Reply via email to