Author: toad
Date: 2008-11-13 14:23:22 +0000 (Thu, 13 Nov 2008)
New Revision: 23520

Added:
   trunk/freenet/src/freenet/node/StillNotAckedException.java
Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Doh, missing file.


Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2008-11-13 14:17:32 UTC 
(rev 23519)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2008-11-13 14:23:22 UTC 
(rev 23520)
@@ -269,6 +269,14 @@
        /** The status of this peer node in terms of Node.PEER_NODE_STATUS_* */
        public int peerNodeStatus = PeerManager.PEER_NODE_STATUS_DISCONNECTED;
        
+       private final ArrayList<KeyTracker> oldTrackers = new 
ArrayList<KeyTracker>();
+       
+       /**
+        * Enable this if debugging losing KeyTracker's. May cause a memory 
leak and
+        * also may cause messages to be received twice.
+        */
+       static final boolean KEEP_OLD_TRACKERS = true;
+       
        static final int CHECK_FOR_SWAPPED_TRACKERS_INTERVAL = 
FNPPacketMangler.SESSION_KEY_REKEYING_INTERVAL / 30;
 
        static final byte[] TEST_AS_BYTES;
@@ -1844,6 +1852,19 @@
                KeyTracker prev = null;
                MessageItem[] messagesTellDisconnected = null;
                synchronized(this) {
+                       oldTrackers.add(newTracker);
+                       if(currentTracker != null) {
+                               if(Arrays.equals(currentTracker.sessionKey, 
newTracker.sessionKey))
+                                       Logger.error(this, "Current tracker has 
same session key as new tracker: "+currentTracker+" vs "+newTracker+" for 
"+this);
+                       }
+                       if(previousTracker != null) {
+                               if(Arrays.equals(previousTracker.sessionKey, 
newTracker.sessionKey))
+                                       Logger.error(this, "Previous tracker 
has same session key as new tracker: "+previousTracker+" vs "+newTracker+" for 
"+this);
+                       }
+                       if(unverifiedTracker != null) {
+                               if(Arrays.equals(unverifiedTracker.sessionKey, 
newTracker.sessionKey))
+                                       Logger.error(this, "Previous tracker 
has same session key as new tracker: "+unverifiedTracker+" vs "+newTracker+" 
for "+this);
+                       }
                        handshakeCount = 0;
                        bogusNoderef = false;
                        // Don't reset the uptime if we rekey
@@ -4140,4 +4161,8 @@
                
                return false;
        }
+
+       public synchronized KeyTracker[] getOldTrackers() {
+               return oldTrackers.toArray(new KeyTracker[oldTrackers.size()]);
+       }
 }

Added: trunk/freenet/src/freenet/node/StillNotAckedException.java
===================================================================
--- trunk/freenet/src/freenet/node/StillNotAckedException.java                  
        (rev 0)
+++ trunk/freenet/src/freenet/node/StillNotAckedException.java  2008-11-13 
14:23:22 UTC (rev 23520)
@@ -0,0 +1,15 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.node;
+
+/**
+ * Thrown when a packet hasn't been acked despite 10 minutes of asking for
+ * an ack. This results in the connection being closed and the packet
+ * which was being sent being killed. We have to throw to avoid locking
+ * issues.
+ * @author Matthew Toseland <[EMAIL PROTECTED]> (0xE43DA450)
+ */
+public class StillNotAckedException extends Exception {
+
+}

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to