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];


Reply via email to