Author: toad
Date: 2007-10-24 18:02:53 +0000 (Wed, 24 Oct 2007)
New Revision: 15545

Removed:
   trunk/freenet/.externalToolBuilders/
Modified:
   trunk/freenet/.project
   trunk/freenet/src/freenet/io/comm/PacketSocketHandler.java
   trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java
   trunk/freenet/src/freenet/node/PacketSender.java
Log:
Queue messages until they are 200ms old, or there is (max packet size - 100 
bytes) data to send to the peer.
Previously it was until there is 1024 bytes to send to the peer.
Benefits:
- Much more coalescing.
- Don't send on data packets immediately => less chance of tracing them from 
node to node, if we don't delay them we are very vulnerable to traffic analysis.

Modified: trunk/freenet/.project
===================================================================
--- trunk/freenet/.project      2007-10-24 17:52:22 UTC (rev 15544)
+++ trunk/freenet/.project      2007-10-24 18:02:53 UTC (rev 15545)
@@ -10,16 +10,6 @@
                        <arguments>
                        </arguments>
                </buildCommand>
-               <buildCommand>
-                       
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
-                       <triggers>clean,full,incremental,</triggers>
-                       <arguments>
-                               <dictionary>
-                                       <key>LaunchConfigHandle</key>
-                                       
<value>&lt;project&gt;/.externalToolBuilders/New_Builder.launch</value>
-                               </dictionary>
-                       </arguments>
-               </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.jdt.core.javanature</nature>

Modified: trunk/freenet/src/freenet/io/comm/PacketSocketHandler.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/PacketSocketHandler.java  2007-10-24 
17:52:22 UTC (rev 15544)
+++ trunk/freenet/src/freenet/io/comm/PacketSocketHandler.java  2007-10-24 
18:02:53 UTC (rev 15545)
@@ -24,9 +24,12 @@
     /**
      * Get the size of the transport layer headers, for byte accounting 
purposes.
      */
-       int getHeadersLength();
+       public int getHeadersLength();

        /** Set the decryption filter to which incoming packets will be fed */
        public void setLowLevelFilter(IncomingPacketFilter f);

+       /** How big must the pending data be before we send a packet? 
*Includes* transport layer headers. */
+       public int getPacketSendThreshold();
+
 }

Modified: trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java     2007-10-24 
17:52:22 UTC (rev 15544)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java     2007-10-24 
18:02:53 UTC (rev 15545)
@@ -255,6 +255,10 @@
        // UDP/IP header is 28 bytes.
     }

+    public int getPacketSendThreshold() {
+       return getMaxPacketSize() - 100;
+    }
+    
        public void start() {
                start(false);
        }

Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java    2007-10-24 17:52:22 UTC 
(rev 15544)
+++ trunk/freenet/src/freenet/node/PacketSender.java    2007-10-24 18:02:53 UTC 
(rev 15545)
@@ -12,7 +12,7 @@
 import freenet.io.comm.DMT;
 import freenet.io.comm.Message;
 import freenet.io.comm.NotConnectedException;
-import freenet.io.comm.UdpSocketHandler;
+import freenet.io.comm.PacketSocketHandler;
 import freenet.support.FileLoggerHook;
 import freenet.support.Logger;
 import freenet.support.OOMHandler;
@@ -274,7 +274,8 @@
                                if(l > messages[j].submitted) l = 
messages[j].submitted;
                                sz += 2 + /* FIXME only 2? */ 
messages[j].getData(pn).length;
                        }
-                       if((l + MAX_COALESCING_DELAY > now) && (sz < 1024 /* 
sensible size */)) {
+                       if((l + MAX_COALESCING_DELAY > now) && 
+                                       (sz < ((PacketSocketHandler) 
pn.getSocketHandler()).getPacketSendThreshold())) {
                                // Don't send immediately
                                if(nextActionTime > (l+MAX_COALESCING_DELAY))
                                        nextActionTime = l+MAX_COALESCING_DELAY;


Reply via email to