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