Author: toad
Date: 2008-04-21 11:35:18 +0000 (Mon, 21 Apr 2008)
New Revision: 19470

Modified:
   trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
Log:
Only redetect after 5 minutes if *all* detector plugins failed.
For some reason UP&P IP detection always fails for me, this should not cause 
constant redetection.

Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-04-21 
11:31:42 UTC (rev 19469)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-04-21 
11:35:18 UTC (rev 19470)
@@ -385,7 +385,7 @@
         */ 

        private HashMap /*<FredIPDetectorPlugin,DetectorRunner>*/ runners = new 
HashMap();
-       private boolean lastDetectAttemptFailed;
+       private HashSet /*<FredIPDetectorPlugin>*/ failedRunners = new 
HashSet();
        private long lastDetectAttemptEndedTime;
        private long firstTimeUrgent;

@@ -415,7 +415,7 @@

                        // If detect attempt failed to produce an IP in the 
last 5 minutes, don't
                        // try again yet.
-                       if(lastDetectAttemptFailed) {
+                       if(failedRunners.size() == runners.size()) {
                                if(now - lastDetectAttemptEndedTime < 
5*60*1000) {
                                        if(logMINOR) Logger.minor(this, "Last 
detect failed less than 5 minutes ago");
                                        return;
@@ -630,7 +630,7 @@
        private void startDetect() {
                if(logMINOR) Logger.minor(this, "Detecting...");
                synchronized(this) {
-                       lastDetectAttemptFailed = false;
+                       failedRunners.clear();
                        for(int i=0;i<plugins.length;i++) {
                                FredPluginIPDetector plugin = plugins[i];
                                if(runners.containsKey(plugin)) continue;
@@ -697,7 +697,7 @@
                                        }
                                        if(failed) {
                                                if(logMINOR) Logger.minor(this, 
"Failed");
-                                               lastDetectAttemptFailed = true;
+                                               failedRunners.add(plugin);
                                                return;
                                        }
                                }


Reply via email to