Author: toad
Date: 2008-12-06 16:10:25 +0000 (Sat, 06 Dec 2008)
New Revision: 24097
Modified:
trunk/freenet/src/freenet/node/OpennetManager.java
trunk/freenet/src/freenet/node/PacketSender.java
Log:
Reduce max old-opennet-peers to 25. Constantly attempt to contact them, as long
as we want a peer on opennet.
This costs us approx 500 bytes per second on opennet nodes. It's worth it for
faster reconnects.
Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java 2008-12-06 16:05:48 UTC
(rev 24096)
+++ trunk/freenet/src/freenet/node/OpennetManager.java 2008-12-06 16:10:25 UTC
(rev 24097)
@@ -58,7 +58,7 @@
* if we have no other option. */
private final LRUQueue oldPeers;
/** Maximum number of old peers */
- static final int MAX_OLD_PEERS = 50;
+ static final int MAX_OLD_PEERS = 25;
/** Time at which last dropped a peer */
private long timeLastDropped;
/** Number of successful CHK requests since last added a node */
Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java 2008-12-06 16:05:48 UTC
(rev 24096)
+++ trunk/freenet/src/freenet/node/PacketSender.java 2008-12-06 16:10:25 UTC
(rev 24097)
@@ -306,28 +306,31 @@
}
brokeAt = newBrokeAt;
- // Consider sending connect requests to our opennet old-peers.
- // No point if they are NATed, of course... but we don't know
whether they are.
+ /* Attempt to connect to old-opennet-peers.
+ * Constantly send handshake packets, in order to get through a
NAT.
+ * Most JFK(1)'s are less than 300 bytes. 25*300/15 = avg
500B/sec bandwidth cost.
+ * Well worth it to allow us to reconnect more quickly. */
+
OpennetManager om = node.getOpennet();
if(om != null) {
- int connCount = node.peers.quickCountConnectedPeers();
- int minDelay = connCount == 0 ?
MIN_OLD_OPENNET_CONNECT_DELAY_NO_CONNS : MIN_OLD_OPENNET_CONNECT_DELAY;
- if(logDEBUG)
- Logger.debug(this, "Conns " + connCount + "
minDelay " + minDelay + " old opennet peers " + om.countOldOpennetPeers() + "
last sent " + (now - timeLastSentOldOpennetConnectAttempt) + " startup " + (now
- node.startupTime));
- if(now - timeLastSentOldOpennetConnectAttempt >
minDelay &&
- connCount <=
MIN_CONNECTIONS_TRY_OLD_OPENNET_PEERS &&
- om.countOldOpennetPeers() > 0 &&
- now - node.startupTime >
OpennetManager.DROP_STARTUP_DELAY) {
- PeerNode pn = om.randomOldOpennetNode();
- if(pn != null) {
- if(logMINOR)
- Logger.minor(this, "Sending
old-opennet connect attempt to " + pn);
+ PeerNode[] peers = om.getOldPeers();
+
+ for(PeerNode pn : peers) {
+ if(pn.isConnected()) continue; // Race
condition??
+ if(pn.noContactDetails()) {
+ pn.startARKFetcher();
+ continue;
+ }
+ if(pn.shouldSendHandshake()) {
+ // Send handshake if necessary
+ long beforeHandshakeTime =
System.currentTimeMillis();
pn.getOutgoingMangler().sendHandshake(pn);
- timeLastSentOldOpennetConnectAttempt =
now;
- if(pn.noContactDetails() &&
node.getPeerNodes().length > 0 && connCount > 0 && node.random.nextBoolean())
- pn.startARKFetcher();
+ long afterHandshakeTime =
System.currentTimeMillis();
+ if((afterHandshakeTime -
beforeHandshakeTime) > (2 * 1000))
+ Logger.error(this,
"afterHandshakeTime is more than 2 seconds past beforeHandshakeTime (" +
(afterHandshakeTime - beforeHandshakeTime) + ") in PacketSender working with "
+ pn.userToString());
}
}
+
}
if(now - lastClearedOldSwapChains > 10000) {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs