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

Reply via email to