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><project>/.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;