Author: toad
Date: 2008-01-15 12:53:43 +0000 (Tue, 15 Jan 2008)
New Revision: 17055

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java
Log:
Pass in to PeerManagerUserAlert: opennet/darknetDefinitelyPortForwarded.
Don't display the too many disconnected warning if we're definitely port 
forwarded so the peers aren't costing much bandwidth.

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-01-15 12:46:16 UTC (rev 
17054)
+++ trunk/freenet/src/freenet/node/Node.java    2008-01-15 12:53:43 UTC (rev 
17055)
@@ -48,15 +48,18 @@
 import freenet.crypt.RandomSource;
 import freenet.crypt.SHA256;
 import freenet.crypt.Yarrow;
+import freenet.io.AddressTracker;
 import freenet.io.comm.DMT;
 import freenet.io.comm.DisconnectedException;
 import freenet.io.comm.FreenetInetAddress;
 import freenet.io.comm.Message;
 import freenet.io.comm.MessageCore;
 import freenet.io.comm.MessageFilter;
+import freenet.io.comm.PacketSocketHandler;
 import freenet.io.comm.Peer;
 import freenet.io.comm.PeerParseException;
 import freenet.io.comm.ReferenceSignatureVerificationException;
+import freenet.io.comm.SocketHandler;
 import freenet.io.comm.UdpSocketHandler;
 import freenet.io.xfer.PartiallyReceivedBlock;
 import freenet.keys.CHKBlock;
@@ -2986,4 +2989,23 @@
                else
                        
clientCore.alerts.unregister(clockProblemDetectedUserAlert);
        }
+
+       public boolean opennetDefinitelyPortForwarded() {
+               OpennetManager om;
+               synchronized(this) {
+                       om = this.opennet;
+               }
+               if(om == null) return false;
+               NodeCrypto crypto = om.crypto;
+               if(crypto == null) return false;
+               PacketSocketHandler sock = crypto.socket;
+               if(sock == null) return false;
+               return sock.getDetectedConnectivityStatus() == 
AddressTracker.DEFINITELY_PORT_FORWARDED;
+       }
+       
+       public boolean darknetDefinitelyPortForwarded() {
+               PacketSocketHandler sock = darknetCrypto.socket;
+               if(sock == null) return false;
+               return sock.getDetectedConnectivityStatus() == 
AddressTracker.DEFINITELY_PORT_FORWARDED;
+       }
 }

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2008-01-15 12:46:16 UTC 
(rev 17054)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2008-01-15 12:53:43 UTC 
(rev 17055)
@@ -961,8 +961,12 @@
                        opennetPeers = this.getOpennetPeers().length;
                        peers = darknetPeers + opennetPeers; // Seednodes don't 
count.
                }
+               boolean opennetDefinitelyPortForwarded = 
node.opennetDefinitelyPortForwarded();
+               boolean darknetDefinitelyPortForwarded = 
node.darknetDefinitelyPortForwarded();
                boolean opennetEnabled = node.isOpennetEnabled();
                synchronized(ua) {
+                       ua.opennetDefinitelyPortForwarded = 
opennetDefinitelyPortForwarded;
+                       ua.darknetDefinitelyPortForwarded = 
darknetDefinitelyPortForwarded;
                        ua.darknetConns = 
getPeerNodeStatusSize(PEER_NODE_STATUS_CONNECTED, true) +
                                
getPeerNodeStatusSize(PEER_NODE_STATUS_ROUTING_BACKED_OFF, true);
                        ua.conns = 
getPeerNodeStatusSize(PEER_NODE_STATUS_CONNECTED, false) +

Modified: trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java 
2008-01-15 12:46:16 UTC (rev 17054)
+++ trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java 
2008-01-15 12:53:43 UTC (rev 17055)
@@ -22,6 +22,8 @@
        public int darknetConns = 0;
        public int darknetPeers = 0;
        public boolean isOpennetEnabled;
+       public boolean darknetDefinitelyPortForwarded;
+       public boolean opennetDefinitelyPortForwarded;

        /** How many connected peers we need to not get alert about not enough 
*/
        public static final int MIN_CONN_ALERT_THRESHOLD = 3;
@@ -67,7 +69,7 @@
                        return l10n("clockProblemTitle");
                if(connError > MIN_CONN_ERROR_ALERT_THRESHOLD)
                        return l10n("connErrorTitle");
-               if(disconnDarknetPeers > MAX_DISCONN_PEER_ALERT_THRESHOLD)
+               if(disconnDarknetPeers > MAX_DISCONN_PEER_ALERT_THRESHOLD && 
!darknetDefinitelyPortForwarded)
                        return l10n("tooManyDisconnectedTitle");
                if(conns > MAX_CONN_ALERT_THRESHOLD)
                        return l10n("tooManyConnsTitle");
@@ -117,7 +119,7 @@
                        s = l10n("clockProblem", "count", 
Integer.toString(clockProblem));
                } else if(connError > MIN_CONN_ERROR_ALERT_THRESHOLD) {
                        s = l10n("connError", "count", 
Integer.toString(connError));
-               } else if(disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD){
+               } else if(disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD && !darknetDefinitelyPortForwarded){
                        s = l10n("tooManyDisconnected", new String[] { "count", 
"max" }, 
                                        new String[] { 
Integer.toString(disconnDarknetPeers), 
Integer.toString(MAX_DISCONN_PEER_ALERT_THRESHOLD)});
                } else if(conns > MAX_CONN_ALERT_THRESHOLD) {
@@ -188,7 +190,7 @@
                        alertNode.addChild("#", l10n("clockProblem", "count", 
Integer.toString(clockProblem)));
                } else if(connError > MIN_CONN_ERROR_ALERT_THRESHOLD) {
                        alertNode.addChild("#", l10n("connError", "count", 
Integer.toString(connError)));
-               } else if (disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD) {
+               } else if (disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD && !darknetDefinitelyPortForwarded) {
                        alertNode.addChild("#", l10n("tooManyDisconnected", new 
String[] { "count", "max" }, new String[] { 
Integer.toString(disconnDarknetPeers), 
Integer.toString(MAX_DISCONN_PEER_ALERT_THRESHOLD)}));
                } else if (conns > MAX_CONN_ALERT_THRESHOLD) {
                        alertNode.addChild("#", l10n("tooManyConns", new 
String[] { "count", "max" }, 
@@ -213,7 +215,7 @@
                if((peers == 0 && !isOpennetEnabled) ||
                                (conns == 0 && !isOpennetEnabled) ||
                                (neverConn > 
MAX_NEVER_CONNECTED_PEER_ALERT_THRESHOLD) ||
-                               (disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD) ||
+                               (disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD && !darknetDefinitelyPortForwarded) ||
                                (conns > MAX_CONN_ALERT_THRESHOLD) ||
                                (peers > MAX_PEER_ALERT_THRESHOLD) ||
                                (n.bwlimitDelayAlertRelevant && 
(bwlimitDelayTime > NodeStats.MAX_BWLIMIT_DELAY_TIME_ALERT_THRESHOLD)) ||
@@ -230,7 +232,7 @@
                return ((peers == 0 && !isOpennetEnabled) ||
                                (conns < 3 && !isOpennetEnabled) ||
                                (neverConn > 
MAX_NEVER_CONNECTED_PEER_ALERT_THRESHOLD) ||
-                               (disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD) ||
+                               (disconnDarknetPeers > 
MAX_DISCONN_PEER_ALERT_THRESHOLD && !darknetDefinitelyPortForwarded) ||
                                (conns > MAX_CONN_ALERT_THRESHOLD) ||
                                (peers > MAX_PEER_ALERT_THRESHOLD) ||
                                (clockProblem > 
MIN_CLOCK_PROBLEM_PEER_ALERT_THRESHOLD) ||


Reply via email to