Author: toad
Date: 2007-12-14 14:49:35 +0000 (Fri, 14 Dec 2007)
New Revision: 16536
Modified:
trunk/freenet/src/freenet/node/FNPPacketMangler.java
Log:
Don't pad if over the MTU. The MTU is an estimate and could be wrong, and we
really don't want fragmented auth packets as many firewalls drop fragmented UDP
packets.
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-12-14
14:46:04 UTC (rev 16535)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-12-14
14:49:35 UTC (rev 16536)
@@ -1581,12 +1581,9 @@
int prePaddingLength = iv.length + hash.length + 2 /* length */
+ output.length;
int maxPacketSize = sock.getMaxPacketSize() -
sock.getHeadersLength();
int paddingLength;
- if(prePaddingLength > maxPacketSize) {
- // Pad anyway if over MTU
- paddingLength = node.fastWeakRandom.nextInt(100);
- } else {
+ if(prePaddingLength < maxPacketSize) {
paddingLength =
node.fastWeakRandom.nextInt(Math.min(100, maxPacketSize - prePaddingLength));
- }
+ } else paddingLength = 0;
// Sometimes we have to send oversize packets (especially
JFK3/4 with anonymous-initiator)
if(paddingLength < 0) paddingLength = 0;
byte[] data = new byte[prePaddingLength + paddingLength];