Author: toad
Date: 2006-09-06 21:56:50 +0000 (Wed, 06 Sep 2006)
New Revision: 10418

Modified:
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
Log:
Fix another ArrayIndexOutOfBoundsException... maybe

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2006-09-06 
21:45:17 UTC (rev 10417)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2006-09-06 
21:56:50 UTC (rev 10418)
@@ -934,6 +934,10 @@
             } else {
                 byte[] data = mi.getData(pn);
                 messageData[x] = data;
+                if(data.length > node.usm.getMaxPacketSize()) {
+                    Logger.error(this, "Message exceeds packet size: 
"+messages[i]);
+                    // Will be handled later
+                }
                 newMsgs[x] = mi;
                 alreadyReported[x] = mi.alreadyReportedBytes;
                 x++;
@@ -946,6 +950,7 @@
             byte[][] newMessageData = new byte[x][];
             System.arraycopy(messageData, 0, newMessageData, 0, x);
             messageData = newMessageData;
+            messages = newMsgs;
         }
         AsyncMessageCallback callbacks[] = new 
AsyncMessageCallback[callbacksCount];
         x=0;
@@ -1002,15 +1007,11 @@
             int count = 0;
             int lastIndex = 0;
             alreadyReportedBytes = 0;
-            for(int i=0;i<=messages.length;i++) {
+            for(int i=0;i<=messageData.length;i++) {
                 int thisLength;
                 if(i == messages.length) thisLength = 0;
                 else thisLength = (messageData[i].length + 2);
                 int newLength = length + thisLength;
-                if(thisLength > node.usm.getMaxPacketSize()) {
-                    Logger.error(this, "Message exceeds packet size: 
"+messages[i]);
-                    // Send the last lot, then send this
-                }
                 count++;
                 if((newLength > node.usm.getMaxPacketSize()) || (count > 255) 
|| (i == messages.length)) {
                     // lastIndex up to the message right before this one


Reply via email to