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);
}