Author: toad
Date: 2006-11-28 18:11:51 +0000 (Tue, 28 Nov 2006)
New Revision: 11090

Modified:
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
   trunk/freenet/src/freenet/node/KeyTracker.java
Log:
Even more packet length paranoia.
Not totally bulletproof, but I don't think it needs to be.

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2006-11-28 
18:02:13 UTC (rev 11089)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2006-11-28 
18:11:51 UTC (rev 11090)
@@ -906,7 +906,9 @@
         byte[][] messageData = new byte[messages.length][];
         int[] alreadyReported = new int[messages.length];
         MessageItem[] newMsgs = new MessageItem[messages.length];
+        KeyTracker kt = pn.getCurrentKeyTracker();
         int length = 1;
+        length += kt.countAcks() + kt.countAckRequests() + 
kt.countResendRequests();
         int callbacksCount = 0;
         int x = 0;
                String mi_name = null;
@@ -917,7 +919,7 @@
             if(mi.formatted) {
                 try {
                     byte[] buf = mi.getData(pn);
-                    KeyTracker kt = pn.getCurrentKeyTracker();
+                    kt = pn.getCurrentKeyTracker();
                     if(kt == null) {
                         if(logMINOR) Logger.minor(this, "kt = null");
                         pn.requeueMessageItems(messages, i, messages.length-i, 
false, "kt = null");
@@ -1036,6 +1038,7 @@
                                requeueLogString = ", requeueing remaining 
messages";
                        }
             length = 1;
+            length += kt.countAcks() + kt.countAckRequests() + 
kt.countResendRequests();
             int count = 0;
             int lastIndex = 0;
             alreadyReportedBytes = 0;

Modified: trunk/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/KeyTracker.java      2006-11-28 18:02:13 UTC 
(rev 11089)
+++ trunk/freenet/src/freenet/node/KeyTracker.java      2006-11-28 18:11:51 UTC 
(rev 11090)
@@ -959,4 +959,20 @@
        public boolean isDeprecated() {
                return this.isDeprecated;
        }
+
+       public int countAckRequests() {
+               return ackRequestQueue.size();
+       }
+
+       public int countResendRequests() {
+               synchronized(resendRequestQueue) {
+                       return resendRequestQueue.size();
+               }
+       }
+
+       public int countAcks() {
+               synchronized(ackQueue) {
+                       return ackQueue.size();
+               }
+       }
 }


Reply via email to