[freenet-cvs] r16666 - branches/legacy/stable/src/freenet/node

jolantern at freenetproject.org jolantern at freenetproject.org
Tue Dec 18 14:35:37 UTC 2007


Author: jolantern
Date: 2007-12-18 14:35:36 +0000 (Tue, 18 Dec 2007)
New Revision: 16666

Modified:
   branches/legacy/stable/src/freenet/node/Node.java
Log:
indent

Modified: branches/legacy/stable/src/freenet/node/Node.java
===================================================================
--- branches/legacy/stable/src/freenet/node/Node.java	2007-12-18 14:18:40 UTC (rev 16665)
+++ branches/legacy/stable/src/freenet/node/Node.java	2007-12-18 14:35:36 UTC (rev 16666)
@@ -89,64 +89,64 @@
 public class Node extends Core implements ConnectionThrottler{
 
 
-    /**
-     * @author root
-     *
-     * TODO To change the template for this generated type comment go to
-     * Window - Preferences - Java - Code Generation - Code and Comments
-     */
-    private class RateLimitingWriterCheckpointed extends LoadSaveCheckpointed {
+	/**
+	 * @author root
+	 *
+	 * TODO To change the template for this generated type comment go to
+	 * Window - Preferences - Java - Code Generation - Code and Comments
+	 */
+	private class RateLimitingWriterCheckpointed extends LoadSaveCheckpointed {
 
-        public RateLimitingWriterCheckpointed(File routingDir) {
-            super(routingDir, new String[] { "ratedata_a", "ratedata_b" });
-        }
+		public RateLimitingWriterCheckpointed(File routingDir) {
+			super(routingDir, new String[] { "ratedata_a", "ratedata_b" });
+		}
 
-        protected int checkpointPeriod() {
-            return 60000;
-        }
+		protected int checkpointPeriod() {
+			return 60000;
+		}
 
-        public void writeData(DataOutputStream dos) throws IOException {
-            receivedRequestCounter.writeDataTo(dos);
-            acceptedExternalRequestCounter.writeDataTo(dos);
-            globalQuotaAverager.writeDataTo(dos);
-            sentRequestCounter.writeDataTo(dos);
-        }
+		public void writeData(DataOutputStream dos) throws IOException {
+			receivedRequestCounter.writeDataTo(dos);
+			acceptedExternalRequestCounter.writeDataTo(dos);
+			globalQuotaAverager.writeDataTo(dos);
+			sentRequestCounter.writeDataTo(dos);
+		}
 
-        protected void fillInBlanks() {
-            if(receivedRequestCounter == null)
-                receivedRequestCounter = new ExtrapolatingTimeDecayingEventCounter(rateLimitingInterval, 1000);
-            Core.logger.log(this, "receivedRequestCounter = "+receivedRequestCounter, Logger.DEBUG);
-            if(acceptedExternalRequestCounter == null)
-                acceptedExternalRequestCounter = new ExtrapolatingTimeDecayingEventCounter(rateLimitingInterval, 1000);
-            Core.logger.log(this, "acceptedExternalRequestCounter = "+acceptedExternalRequestCounter, Logger.DEBUG);
-            if(globalQuotaAverager == null)
-                globalQuotaAverager = new TimeDecayingRunningAverage(1000, rateLimitingInterval, 0, Double.MAX_VALUE);
-            Core.logger.log(this, "globalQuotaAverager = "+globalQuotaAverager, Logger.DEBUG);
-            if(sentRequestCounter == null)
-                sentRequestCounter = new ExtrapolatingTimeDecayingEventCounter(rateLimitingInterval/2, 1000);
-            Core.logger.log(this, "sentRequestCounter = "+sentRequestCounter, Logger.DEBUG);
-        }
+		protected void fillInBlanks() {
+			if(receivedRequestCounter == null)
+				receivedRequestCounter = new ExtrapolatingTimeDecayingEventCounter(rateLimitingInterval, 1000);
+			Core.logger.log(this, "receivedRequestCounter = "+receivedRequestCounter, Logger.DEBUG);
+			if(acceptedExternalRequestCounter == null)
+				acceptedExternalRequestCounter = new ExtrapolatingTimeDecayingEventCounter(rateLimitingInterval, 1000);
+			Core.logger.log(this, "acceptedExternalRequestCounter = "+acceptedExternalRequestCounter, Logger.DEBUG);
+			if(globalQuotaAverager == null)
+				globalQuotaAverager = new TimeDecayingRunningAverage(1000, rateLimitingInterval, 0, Double.MAX_VALUE);
+			Core.logger.log(this, "globalQuotaAverager = "+globalQuotaAverager, Logger.DEBUG);
+			if(sentRequestCounter == null)
+				sentRequestCounter = new ExtrapolatingTimeDecayingEventCounter(rateLimitingInterval/2, 1000);
+			Core.logger.log(this, "sentRequestCounter = "+sentRequestCounter, Logger.DEBUG);
+		}
 
-        protected void readFrom(DataInputStream dis) throws IOException {
-            receivedRequestCounter = new ExtrapolatingTimeDecayingEventCounter(1000, rateLimitingInterval, dis);
-            Core.logger.log(this, "Read receivedRequestCounter: "+receivedRequestCounter, Logger.MINOR);
-            acceptedExternalRequestCounter = new ExtrapolatingTimeDecayingEventCounter(1000, rateLimitingInterval, dis);
-            Core.logger.log(this, "Read acceptedExternalRequestCounter: "+acceptedExternalRequestCounter, Logger.MINOR);
-            globalQuotaAverager = new TimeDecayingRunningAverage(1000, rateLimitingInterval, 0, Double.MAX_VALUE, dis);
-            Core.logger.log(this, "Read globalQuotaAverager: "+globalQuotaAverager, Logger.MINOR);
-            sentRequestCounter = new ExtrapolatingTimeDecayingEventCounter(1000, rateLimitingInterval, dis);
-            Core.logger.log(this, "Read sentRequestCounter: "+sentRequestCounter, Logger.MINOR);
-        }
+		protected void readFrom(DataInputStream dis) throws IOException {
+			receivedRequestCounter = new ExtrapolatingTimeDecayingEventCounter(1000, rateLimitingInterval, dis);
+			Core.logger.log(this, "Read receivedRequestCounter: "+receivedRequestCounter, Logger.MINOR);
+			acceptedExternalRequestCounter = new ExtrapolatingTimeDecayingEventCounter(1000, rateLimitingInterval, dis);
+			Core.logger.log(this, "Read acceptedExternalRequestCounter: "+acceptedExternalRequestCounter, Logger.MINOR);
+			globalQuotaAverager = new TimeDecayingRunningAverage(1000, rateLimitingInterval, 0, Double.MAX_VALUE, dis);
+			Core.logger.log(this, "Read globalQuotaAverager: "+globalQuotaAverager, Logger.MINOR);
+			sentRequestCounter = new ExtrapolatingTimeDecayingEventCounter(1000, rateLimitingInterval, dis);
+			Core.logger.log(this, "Read sentRequestCounter: "+sentRequestCounter, Logger.MINOR);
+		}
 
-        protected void preload() {
-            // All will be initted to null
-        }
+		protected void preload() {
+			// All will be initted to null
+		}
 
-        public String getCheckpointName() {
-            return "Rate limiting data save process";
-        }
+		public String getCheckpointName() {
+			return "Rate limiting data save process";
+		}
 
-    }
+	}
 	public static int maxConnDefault = 200;
 	public static int maxFileDefault = 256;
 	public static boolean isWin95;
@@ -161,7 +161,7 @@
 	private static final NumberFormat nf03;
 	private static final NumberFormat nf3;
 	static float overloadHighDefault = 1.25f;
-    private static final String ARG_BOOLEAN = "<true|false>";
+	private static final String ARG_BOOLEAN = "<true|false>";
 	static {
 		nfp = NumberFormat.getPercentInstance();
 		nfp.setMinimumFractionDigits(0);
@@ -379,7 +379,7 @@
 		config.addOption("doLowLevelInputLimiting", 1, true, 3267);
 		// Commented out because of limited use and potential political
 		// problems i.e. not cross platform
-	    config.addOption("doCPULoad",1,false,3264);
+		config.addOption("doCPULoad",1,false,3264);
 		config.addOption("sendingQueueLength", 1, 256, 3266);
 		config.addOption("sendingQueueBytes", 1, 1492 * 8, 3267);
 		config.addOption("requestIntervalDefault", 1, 1000, 3268);
@@ -484,10 +484,10 @@
 			false,
 			4119);
 		config.addOption(
-		    "mainport.params.servlet.1.params.dontWarnOperaUsers",
-		    1,
-		    false,
-		    4119);
+			"mainport.params.servlet.1.params.dontWarnOperaUsers",
+			1,
+			false,
+			4119);
 		config.addOption(
 			"mainport.params.servlet.2.uri",
 			1,
@@ -534,47 +534,47 @@
 			"Oldest living Freenet index site (no categories, but has activelinks)",
 			6103);
 
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.1.key",
-//			1,
-//			"SSK at rjYFfgPHfolmcStiaoxESFfBXz8PAgM/FreenetHelp//",
-//			6110);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.1.title",
-//			1,
-//			"The Freenet Help Index",
-//			6111);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.1.activelinkFile",
-//			1,
-//			"ActiveLink.png",
-//			6112);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.1.description",
-//			1,
-//			"Index of Freenet help resources",
-//			6113);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.1.key",
+//            1,
+//            "SSK at rjYFfgPHfolmcStiaoxESFfBXz8PAgM/FreenetHelp//",
+//            6110);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.1.title",
+//            1,
+//            "The Freenet Help Index",
+//            6111);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.1.activelinkFile",
+//            1,
+//            "ActiveLink.png",
+//            6112);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.1.description",
+//            1,
+//            "Index of Freenet help resources",
+//            6113);
 //
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.2.key",
-//			1,
-//			"SSK at IWmzQkYKOlOefQoWbGCQSrkS3vsPAgM,NzRr-Pj88cVT0bN~1urLVg/FIND//",
-//			6120);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.2.title",
-//			1,
-//			"FIND is Not Dolphin",
-//			6121);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.2.activelinkFile",
-//			1,
-//			"activelink.png",
-//			6122);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.2.description",
-//			1,
-//			"Index of sites available within the \"stable\" network, often available here too",
-//			6123);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.2.key",
+//            1,
+//            "SSK at IWmzQkYKOlOefQoWbGCQSrkS3vsPAgM,NzRr-Pj88cVT0bN~1urLVg/FIND//",
+//            6120);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.2.title",
+//            1,
+//            "FIND is Not Dolphin",
+//            6121);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.2.activelinkFile",
+//            1,
+//            "activelink.png",
+//            6122);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.2.description",
+//            1,
+//            "Index of sites available within the \"stable\" network, often available here too",
+//            6123);
 //
 		config.addOption(
 			"mainport.params.servlet.2.bookmarks.1.key",
@@ -597,110 +597,110 @@
 			"One of Freenet's oldest Freesites, witty discussion of Freenet, the universe, and everything",
 			6133);
 
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.4.key",
-//			1,
-//			"SSK at Sc6qV~D6iFhaYord6HtbjJ8MaEYPAgM/YoYo//",
-//			6140);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.4.title",
-//			1,
-//			"YoYo!",
-//			6141);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.4.activelinkFile",
-//			1,
-//			"activelink.png",
-//			6142);
-//		config.addOption(
-//			"mainport.params.servlet.2.bookmarks.4.description",
-//			1,
-//			"Categorized freenet index",
-//			6143);
-//		
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.4.key",
+//            1,
+//            "SSK at Sc6qV~D6iFhaYord6HtbjJ8MaEYPAgM/YoYo//",
+//            6140);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.4.title",
+//            1,
+//            "YoYo!",
+//            6141);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.4.activelinkFile",
+//            1,
+//            "activelink.png",
+//            6142);
+//        config.addOption(
+//            "mainport.params.servlet.2.bookmarks.4.description",
+//            1,
+//            "Categorized freenet index",
+//            6143);
+//        
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.2.key",
+			"mainport.params.servlet.2.bookmarks.2.key",
 			1,
-		    "SSK at JiqlnfX6MK4nHDl6ZjOrSaMnDB8PAgM,CUnDuNQdRTeTXiDMRM93dQ/OFIFY//",
-		    6140);
+			"SSK at JiqlnfX6MK4nHDl6ZjOrSaMnDB8PAgM,CUnDuNQdRTeTXiDMRM93dQ/OFIFY//",
+			6140);
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.2.title",
+			"mainport.params.servlet.2.bookmarks.2.title",
 			1,
-		    "Oskar Finds It For You",
-		    6141);
+			"Oskar Finds It For You",
+			6141);
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.2.activelinkFile",
+			"mainport.params.servlet.2.bookmarks.2.activelinkFile",
 			1,
 			"activelink.png",
-		    6142);
+			6142);
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.2.description",
+			"mainport.params.servlet.2.bookmarks.2.description",
 			1,
-		    "Another index freesite (one page per category)",
-		    6143);
+			"Another index freesite (one page per category)",
+			6143);
 		
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.3.key",
-		    1,
-		    "SSK at y~-NCd~il6RMxOe9jjf~VR7mSYwPAgM,ds52dBUTmr8fSHePn1Sn4g/OneMore//",
-		    6150);
+			"mainport.params.servlet.2.bookmarks.3.key",
+			1,
+			"SSK at y~-NCd~il6RMxOe9jjf~VR7mSYwPAgM,ds52dBUTmr8fSHePn1Sn4g/OneMore//",
+			6150);
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.3.title",
-		    1,
-		    "One More Time",
-		    6151);
+			"mainport.params.servlet.2.bookmarks.3.title",
+			1,
+			"One More Time",
+			6151);
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.3.activelinkFile",
-		    1,
-		    "activelink.gif",
-		    6152);
+			"mainport.params.servlet.2.bookmarks.3.activelinkFile",
+			1,
+			"activelink.gif",
+			6152);
 		config.addOption(
-		    "mainport.params.servlet.2.bookmarks.3.description",
-		    1,
-		    "Yet another index freesite (one page per category)",
-		    6153);
+			"mainport.params.servlet.2.bookmarks.3.description",
+			1,
+			"Yet another index freesite (one page per category)",
+			6153);
 
 		config.addOption(
-		        "mainport.params.servlet.2.bookmarks.4.key",
-			    1,
-			    "SSK at sPolFAwS69lG2Le~TTRzNEVarcEPAgM/DFI//",
-			    6160);
+				"mainport.params.servlet.2.bookmarks.4.key",
+				1,
+				"SSK at sPolFAwS69lG2Le~TTRzNEVarcEPAgM/DFI//",
+				6160);
 			config.addOption(
-			    "mainport.params.servlet.2.bookmarks.4.title",
-			    1,
-			    "Dolphin's Freenet Index",
-			    6161);
+				"mainport.params.servlet.2.bookmarks.4.title",
+				1,
+				"Dolphin's Freenet Index",
+				6161);
 			config.addOption(
-			    "mainport.params.servlet.2.bookmarks.4.activelinkFile",
-			    1,
-			    "activelink.png",
-			    6162);
+				"mainport.params.servlet.2.bookmarks.4.activelinkFile",
+				1,
+				"activelink.png",
+				6162);
 			config.addOption(
-			    "mainport.params.servlet.2.bookmarks.4.description",
-			    1,
-			    "Another categorized Freenet index (one big page)",
-			    6163);
+				"mainport.params.servlet.2.bookmarks.4.description",
+				1,
+				"Another categorized Freenet index (one big page)",
+				6163);
 
 		config.addOption(
-		        "mainport.params.servlet.2.bookmarks.5.key",
-			    1,
-			    "SSK at rVxBgVi4oLfrFEWPdPas1XZSYooPAgM,QZvYaKsdFJxfCjq~FiC5XA/CICFI//",
-			    6160);
+				"mainport.params.servlet.2.bookmarks.5.key",
+				1,
+				"SSK at rVxBgVi4oLfrFEWPdPas1XZSYooPAgM,QZvYaKsdFJxfCjq~FiC5XA/CICFI//",
+				6160);
 			config.addOption(
-			    "mainport.params.servlet.2.bookmarks.5.title",
-			    1,
-			    "CIC's Freesite Index",
-			    6161);
+				"mainport.params.servlet.2.bookmarks.5.title",
+				1,
+				"CIC's Freesite Index",
+				6161);
 			config.addOption(
-			    "mainport.params.servlet.2.bookmarks.5.activelinkFile",
-			    1,
-			    "activelink.png",
-			    6162);
+				"mainport.params.servlet.2.bookmarks.5.activelinkFile",
+				1,
+				"activelink.png",
+				6162);
 			config.addOption(
-			    "mainport.params.servlet.2.bookmarks.5.description",
-			    1,
-			    "Yet another categorized single page Freenet index",
-			    6163);
+				"mainport.params.servlet.2.bookmarks.5.description",
+				1,
+				"Yet another categorized single page Freenet index",
+				6163);
 
 		
 		
@@ -906,10 +906,10 @@
 			true,
 			4179);
 		config.addOption(
-		    "mainport.params.servlet.7.params.maxRetries",
-		    1,
-		    50,
-		    4179);
+			"mainport.params.servlet.7.params.maxRetries",
+			1,
+			50,
+			4179);
 
 		String downloadDir;
 		try {
@@ -1191,14 +1191,14 @@
 		config.setExpert("doEstimatorSmoothing", true);
 		config.argDesc("doEstimatorSmoothing", ARG_BOOLEAN);
 		config.longDesc("doEstimatorSmoothing", 
-		        "Whether to use adjacent buckets to estimate the value of a given bucket in a KeyspaceEstimator when it has no reports. "+
-		        "If you don't understand what I just said you should probably leave it alone!");
+				"Whether to use adjacent buckets to estimate the value of a given bucket in a KeyspaceEstimator when it has no reports. "+
+				"If you don't understand what I just said you should probably leave it alone!");
 
 		// useFastEstimators
 		config.setExpert("useFastEstimators", true);
 		config.argDesc("useFastEstimators", ARG_BOOLEAN);
 		config.longDesc("useFastEstimators",
-		        "Whether to use doubles (floating point, 53 bit mantissa, implemented in hardware on most systems) instead of BigIntegers (full 160 bits, slow) in NGRouting estimators.");
+				"Whether to use doubles (floating point, 53 bit mantissa, implemented in hardware on most systems) instead of BigIntegers (full 160 bits, slow) in NGRouting estimators.");
 		
 		// minCP
 		config.setExpert("minCP", true);
@@ -1416,8 +1416,8 @@
 		config.setExpert("maxOpenConnectionsNewbieFraction", true);
 		config.argDesc  ("maxOpenConnectionsNewbieFraction", "<number between 0.0 and 1.0>");
 		config.shortDesc("maxOpenConnectionsNewbieFraction", 
-		        "Proportion of open connections limit that may be newbie nodes before we start "+
-		        "rejecting new connections (unless there are free slots)");
+				"Proportion of open connections limit that may be newbie nodes before we start "+
+				"rejecting new connections (unless there are free slots)");
 		
 		// maxNodeFilesOpen
 		config.setExpert("maxNodeFilesOpen", true);
@@ -1975,7 +1975,7 @@
 		config.setExpert("logInputBytes", true);
 		config.argDesc  ("logInputBytes", "true/false");
 		config.shortDesc("logInputBytes", "Set true to count non-local TCP bytes "
-		        + "received for diagnostics. Also used for part of rate limiting.");
+				+ "received for diagnostics. Also used for part of rate limiting.");
 		
 		config.setExpert("watchme", true);
 		config.argDesc("watchme", "true/false");
@@ -2502,12 +2502,12 @@
 		config.setExpert("mainport.params.servlet.1.params.dontWarnOperaUsers", true);
 		config.argDesc  ("mainport.params.servlet.1.params.dontWarnOperaUsers", "yes|no");
 		config.shortDesc("mainport.params.servlet.1.params.dontWarnOperaUsers", 
-		        "Set true to not warn Opera users about MIME types. READ LONG DESCRIPTION.");
+				"Set true to not warn Opera users about MIME types. READ LONG DESCRIPTION.");
 		config.longDesc ("mainport.params.servlet.1.params.dontWarnOperaUsers",
-		        "Opera and IE suffer from a design flaw that prevent FProxy from protecting ",
-		        "your anonymity properly. In Opera, it can be turned off. If you are sure you ",
-		        "have done so (read the warning page for instructions), enable this option to ",
-		        "eliminate the warning page.");
+				"Opera and IE suffer from a design flaw that prevent FProxy from protecting ",
+				"your anonymity properly. In Opera, it can be turned off. If you are sure you ",
+				"have done so (read the warning page for instructions), enable this option to ",
+				"eliminate the warning page.");
 		
 		// mainport.params.servlet.2.uri
 		config.setExpert("mainport.params.servlet.2.uri", true);
@@ -2642,67 +2642,67 @@
 			"mainport.params.servlet.2.bookmarks.2.description",
 			"The description of the third bookmark on the web proxy");
 
-//		config.setExpert("mainport.params.servlet.2.bookmarks.3.key", true);
-//		config.argDesc(
-//			"mainport.params.servlet.2.bookmarks.3.key",
-//			"freenet key");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.3.key",
-//			"The fourth bookmark for the web proxy");
-//		config.setExpert("mainport.params.servlet.2.bookmarks.3.title", true);
-//		config.argDesc("mainport.params.servlet.2.bookmarks.3.title", "string");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.3.title",
-//			"The title for the fourth bookmark for the web proxy");
-//		config.setExpert(
-//			"mainport.params.servlet.2.bookmarks.3.activelinkFile",
-//			true);
-//		config.argDesc(
-//			"mainport.params.servlet.2.bookmarks.3.activelinkFile",
-//			"string");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.3.activelinkFile",
-//			"The name of the activelink image within the key for the fourth bookmark");
-//		config.setExpert(
-//			"mainport.params.servlet.2.bookmarks.3.description",
-//			true);
-//		config.argDesc(
-//			"mainport.params.servlet.2.bookmarks.3.description",
-//			"string");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.3.description",
-//			"The description of the fourth bookmark on the web proxy");
+//        config.setExpert("mainport.params.servlet.2.bookmarks.3.key", true);
+//        config.argDesc(
+//            "mainport.params.servlet.2.bookmarks.3.key",
+//            "freenet key");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.3.key",
+//            "The fourth bookmark for the web proxy");
+//        config.setExpert("mainport.params.servlet.2.bookmarks.3.title", true);
+//        config.argDesc("mainport.params.servlet.2.bookmarks.3.title", "string");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.3.title",
+//            "The title for the fourth bookmark for the web proxy");
+//        config.setExpert(
+//            "mainport.params.servlet.2.bookmarks.3.activelinkFile",
+//            true);
+//        config.argDesc(
+//            "mainport.params.servlet.2.bookmarks.3.activelinkFile",
+//            "string");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.3.activelinkFile",
+//            "The name of the activelink image within the key for the fourth bookmark");
+//        config.setExpert(
+//            "mainport.params.servlet.2.bookmarks.3.description",
+//            true);
+//        config.argDesc(
+//            "mainport.params.servlet.2.bookmarks.3.description",
+//            "string");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.3.description",
+//            "The description of the fourth bookmark on the web proxy");
 //
-//		config.setExpert("mainport.params.servlet.2.bookmarks.4.key", true);
-//		config.argDesc(
-//			"mainport.params.servlet.2.bookmarks.4.key",
-//			"freenet key");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.4.key",
-//			"The fifth bookmark for the web proxy");
-//		config.setExpert("mainport.params.servlet.2.bookmarks.4.title", true);
-//		config.argDesc("mainport.params.servlet.2.bookmarks.4.title", "string");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.4.title",
-//			"The title for the fifth bookmark for the web proxy");
-//		config.setExpert(
-//			"mainport.params.servlet.2.bookmarks.4.activelinkFile",
-//			true);
-//		config.argDesc(
-//			"mainport.params.servlet.2.bookmarks.4.activelinkFile",
-//			"string");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.4.activelinkFile",
-//			"The name of the activelink image within the key for the fifth bookmark");
-//		config.setExpert(
-//			"mainport.params.servlet.2.bookmarks.4.description",
-//			true);
-//		config.argDesc(
-//			"mainport.params.servlet.2.bookmarks.4.description",
-//			"string");
-//		config.shortDesc(
-//			"mainport.params.servlet.2.bookmarks.4.description",
-//			"The description of the fifth bookmark on the web proxy");
+//        config.setExpert("mainport.params.servlet.2.bookmarks.4.key", true);
+//        config.argDesc(
+//            "mainport.params.servlet.2.bookmarks.4.key",
+//            "freenet key");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.4.key",
+//            "The fifth bookmark for the web proxy");
+//        config.setExpert("mainport.params.servlet.2.bookmarks.4.title", true);
+//        config.argDesc("mainport.params.servlet.2.bookmarks.4.title", "string");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.4.title",
+//            "The title for the fifth bookmark for the web proxy");
+//        config.setExpert(
+//            "mainport.params.servlet.2.bookmarks.4.activelinkFile",
+//            true);
+//        config.argDesc(
+//            "mainport.params.servlet.2.bookmarks.4.activelinkFile",
+//            "string");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.4.activelinkFile",
+//            "The name of the activelink image within the key for the fifth bookmark");
+//        config.setExpert(
+//            "mainport.params.servlet.2.bookmarks.4.description",
+//            true);
+//        config.argDesc(
+//            "mainport.params.servlet.2.bookmarks.4.description",
+//            "string");
+//        config.shortDesc(
+//            "mainport.params.servlet.2.bookmarks.4.description",
+//            "The description of the fifth bookmark on the web proxy");
 //
 		// mainport.params.servlet.3.uri
 		config.setExpert("mainport.params.servlet.3.uri", true);
@@ -2996,14 +2996,14 @@
 
 		// mainport.params.servlet.7.params.maxRetries
 		config.setExpert(
-		    "mainport.params.servlet.7.params.maxRetries",
-		    true);
+			"mainport.params.servlet.7.params.maxRetries",
+			true);
 		config.argDesc(
-		    "mainport.params.servlet.7.params.maxRetries",
-		    "positive integer");
+			"mainport.params.servlet.7.params.maxRetries",
+			"positive integer");
 		config.shortDesc(
-		    "mainport.params.servlet.7.params.maxRetries",
-		    "Maximum number of retries per block for a splitfile");
+			"mainport.params.servlet.7.params.maxRetries",
+			"Maximum number of retries per block for a splitfile");
 		
 		// mainport.params.servlet.7.params.sfRetryHtlIncrement
 		config.setExpert(
@@ -3381,7 +3381,7 @@
 	static public RecentKeyList recentKeys;
 	private static Object syncCountsByBackoffCount = new Object();
 	private static long[] successesByBackoffCount;
-    private static long[] failuresByBackoffCount;
+	private static long[] failuresByBackoffCount;
 
 	public static boolean isAuthorized(Identity id, String p) {
 		if (adminPassword != null
@@ -3480,8 +3480,8 @@
 		lowLevelBWLimitMultiplier =
 			params.getFloat("lowLevelBWLimitMultiplier")
 				* lowLevelBWLimitFudgeFactor;
-//		doLowLevelOutputLimiting = false;
-//		doLowLevelInputLimiting = false;
+//        doLowLevelOutputLimiting = false;
+//        doLowLevelInputLimiting = false;
 		doLowLevelOutputLimiting =
 			params.getBoolean("doLowLevelOutputLimiting");
 		doLowLevelInputLimiting = params.getBoolean("doLowLevelInputLimiting");
@@ -3575,11 +3575,11 @@
 		maxNodeConnections = params.getInt("maxNodeConnections");
 		maxNodeFilesOpen = params.getInt("maxNodeFilesOpen");
 		maxOpenConnectionsNewbieFraction = 
-		    params.getDouble("maxOpenConnectionsNewbieFraction");
+			params.getDouble("maxOpenConnectionsNewbieFraction");
 
 		rtMaxRefs = params.getInt("rtMaxRefs");
 		if(maxNodeConnections > 0)
-		    rtMaxNodes = maxNodeConnections * 2;
+			rtMaxNodes = maxNodeConnections * 2;
 		else
 		rtMaxNodes = params.getInt("rtMaxNodes");
 		doEstimatorSmoothing = params.getBoolean("doEstimatorSmoothing");
@@ -3685,7 +3685,7 @@
 		}
 		//Unfortunately the below method doesn't work then the JVM is killed bu the user...
 		//However, it looks better if we at least _try_ to clean up after us.
-		lockFile.deleteOnExit(); 		
+		lockFile.deleteOnExit();         
 
 		// locate the data files
 		nodeFile = params.getString("nodeFile");
@@ -3773,10 +3773,10 @@
 		// protocol
 		// version to prevent spy nodes from polluting the real network
 		if (params.getBoolean("watchme")) {
-		    watchme = new WatchMe();
-		    watchme.init(params.getInt("watchmeRetries"));
-		    Version.protocolVersion = Version.protocolVersion + "wm";
-		    freenet.session.FnpLink.AUTH_LAYER_VERSION = 0x05;
+			watchme = new WatchMe();
+			watchme.init(params.getInt("watchmeRetries"));
+			Version.protocolVersion = Version.protocolVersion + "wm";
+			freenet.session.FnpLink.AUTH_LAYER_VERSION = 0x05;
 		}
 		// Around 1000 seconds.
 		// This is the time it would take for a request to start and finish
@@ -3988,12 +3988,12 @@
 	final RateLimitingWriterCheckpointed rlwc;
 	
 	public void begin(Ticker t,
-	        OpenConnectionManager ocm, NIOInterface[] inter,
-	        boolean daemon) throws CoreException {
-	    connectionOpener = 
-	        new ConnectionOpenerManager(maxNegotiations, rt, ocm, this);
+			OpenConnectionManager ocm, NIOInterface[] inter,
+			boolean daemon) throws CoreException {
+		connectionOpener = 
+			new ConnectionOpenerManager(maxNegotiations, rt, ocm, this);
 		queueManager = new QueueManager(ocm, (NGRoutingTable)(Main.origRT), t);
-	    super.begin(t, ocm, inter, daemon);
+		super.begin(t, ocm, inter, daemon);
 	}
 	
 	protected class NodeBackgroundInserter extends BackgroundInserter {
@@ -4230,77 +4230,77 @@
 		return false;
 	}
 
-	     static class TickStat {
-	     long user;
-	     long nice;
-	     long system;
-	     long spare;
+		 static class TickStat {
+		 long user;
+		 long nice;
+		 long system;
+		 long spare;
 
-	     boolean read(File f) {
-	         String firstline;
-	         try {
-	         FileInputStream fis = new FileInputStream(f);
-	         ReadInputStream ris = new ReadInputStream(fis);
-	         firstline = ris.readln();
-	         ris.close();
-	         } catch (IOException e) { return false; }
-	         logger.log(this, "Read first line: "+firstline,
-	                 Logger.DEBUG);
-	         if(!firstline.startsWith("cpu")) return false;
-	         long[] data = new long[4];
-	         for(int i=0;i<4;i++) {
-	         firstline = firstline.substring("cpu".length()).trim();
-	         firstline = firstline + ' ';
-	         int x = firstline.indexOf(' ');
-	         if(x == -1) return false;
-	         String firstbit = firstline.substring(0, x);
-	         try {
-	             data[i] = Long.parseLong(firstbit);
-	         } catch (NumberFormatException e) {
-	             return false;
-	         }
-	         firstline = firstline.substring(x);
-	         }
-	         user = data[0];
-	         nice = data[1];
-	         system = data[2];
-	         spare = data[3];
-	         logger.log(this, "Read from file: user "+user+" nice "+nice+
-	                 " system "+system+" spare "+spare, Logger.DEBUG);
-	         return true;
-	     }
+		 boolean read(File f) {
+			 String firstline;
+			 try {
+			 FileInputStream fis = new FileInputStream(f);
+			 ReadInputStream ris = new ReadInputStream(fis);
+			 firstline = ris.readln();
+			 ris.close();
+			 } catch (IOException e) { return false; }
+			 logger.log(this, "Read first line: "+firstline,
+					 Logger.DEBUG);
+			 if(!firstline.startsWith("cpu")) return false;
+			 long[] data = new long[4];
+			 for(int i=0;i<4;i++) {
+			 firstline = firstline.substring("cpu".length()).trim();
+			 firstline = firstline + ' ';
+			 int x = firstline.indexOf(' ');
+			 if(x == -1) return false;
+			 String firstbit = firstline.substring(0, x);
+			 try {
+				 data[i] = Long.parseLong(firstbit);
+			 } catch (NumberFormatException e) {
+				 return false;
+			 }
+			 firstline = firstline.substring(x);
+			 }
+			 user = data[0];
+			 nice = data[1];
+			 system = data[2];
+			 spare = data[3];
+			 logger.log(this, "Read from file: user "+user+" nice "+nice+
+					 " system "+system+" spare "+spare, Logger.DEBUG);
+			 return true;
+		 }
 
-	     int calculate(TickStat old) {
-	         long userdiff = user - old.user;
-	         long nicediff = nice - old.nice;
-	         long systemdiff = system - old.system;
-	         long sparediff = spare - old.spare;
+		 int calculate(TickStat old) {
+			 long userdiff = user - old.user;
+			 long nicediff = nice - old.nice;
+			 long systemdiff = system - old.system;
+			 long sparediff = spare - old.spare;
 
-	         if(userdiff + nicediff + systemdiff + sparediff <= 0) return 0;
-	         logger.log(this, "User changed by "+userdiff+", Nice: "+nicediff+
-	                 ", System: "+systemdiff+", Spare: "+sparediff,
-	                 Logger.DEBUG);
-	         int usage = (int)((100 * (userdiff + nicediff + systemdiff)) /
-	                   (userdiff + nicediff + systemdiff + sparediff));
-	         logger.log(this, "CPU usage: "+usage, Logger.DEBUG);
-	         return usage;
-	     }
+			 if(userdiff + nicediff + systemdiff + sparediff <= 0) return 0;
+			 logger.log(this, "User changed by "+userdiff+", Nice: "+nicediff+
+					 ", System: "+systemdiff+", Spare: "+sparediff,
+					 Logger.DEBUG);
+			 int usage = (int)((100 * (userdiff + nicediff + systemdiff)) /
+					   (userdiff + nicediff + systemdiff + sparediff));
+			 logger.log(this, "CPU usage: "+usage, Logger.DEBUG);
+			 return usage;
+		 }
 
-	     void copyFrom(TickStat old) {
-	         user = old.user;
-	         nice = old.nice;
-	         system = old.system;
-	         spare = old.spare;
-	     }
-	     }
+		 void copyFrom(TickStat old) {
+			 user = old.user;
+			 nice = old.nice;
+			 system = old.system;
+			 spare = old.spare;
+		 }
+		 }
 
-	     int lastCPULoadEstimate = 0;
-	     long lastCPULoadEstimateTime = 0;
+		 int lastCPULoadEstimate = 0;
+		 long lastCPULoadEstimateTime = 0;
 
-	     File proc = File.separator.equals("/") ?
-	     new File("/proc/stat") : null;
-	     TickStat tsOld = new TickStat();
-	     TickStat tsNew = null;
+		 File proc = File.separator.equals("/") ?
+		 new File("/proc/stat") : null;
+		 TickStat tsOld = new TickStat();
+		 TickStat tsNew = null;
 
 	float lastEstimatedLoad = 0;
 	float lastEstimatedRateLimitingLoad = 0;
@@ -4327,14 +4327,14 @@
 
 		long now = System.currentTimeMillis();
 		if(why == null) {
-		    synchronized(loadSync) {
-		        long last = forRateLimiting ? lastCalculatedRateLimitingLoad :
-		            lastCalculatedEstimatedLoad;
-		            if(last + minLoadEstimationInterval > now) {
-		                return forRateLimiting ? lastEstimatedRateLimitingLoad :
-		                    lastEstimatedLoad;
-		            }
-		    }
+			synchronized(loadSync) {
+				long last = forRateLimiting ? lastCalculatedRateLimitingLoad :
+					lastCalculatedEstimatedLoad;
+					if(last + minLoadEstimationInterval > now) {
+						return forRateLimiting ? lastEstimatedRateLimitingLoad :
+							lastEstimatedLoad;
+					}
+			}
 		}
 		
 		// FIXME: make it proportional?
@@ -4370,7 +4370,7 @@
 				delay = 0.0;
 			double load;
 			load = calculateLoadForUnit("routingTime", "ms", why, delay, 
-			        requestDelayCutoff, successfulDelayCutoff, forRateLimiting);
+					requestDelayCutoff, successfulDelayCutoff, forRateLimiting);
 			
 			if (ret < load)
 				ret = load;
@@ -4382,8 +4382,8 @@
 				delay = 0.0;
 			
 			double load = calculateLoadForUnit("messageSendTimeRequest", "ms", why,
-			        delay, requestSendTimeCutoff, successfulSendTimeCutoff,
-			        forRateLimiting);
+					delay, requestSendTimeCutoff, successfulSendTimeCutoff,
+					forRateLimiting);
 			
 			if (load > overloadLow && ret < load)
 				ret = load;
@@ -4391,29 +4391,29 @@
 
 		// by backedOffCount
 		//if(Main.origRT instanceof NGRoutingTable && forRateLimiting) {
-		//	int totnod=((NGRoutingTable)Main.origRT).countConnectedN
-		//		odes();
-		//	if(totnod>20) {
-		//		int openod=((NGRoutingTable)Main.origRT).countUn
-		//			backedOffNodes();
-		//		double load=(double)(totnod-openod)/(double)totn
-		//			od;
-		//		// multiply by 1/x , where x is the desired percent
-		//		// of backed off routes. As of 08/26, anything below
-		//		// about 70% is foolhardy
-		//		load *= 1.333 ; // target 75% closed (25% open)
-//		    if (load > overloadLow && ret < load)
-//		        ret = load;
-		//		if (why != null) {
-		//			why.append("<br />Load due to backoff = ");
-		//			why.append(nfp.format(load));
-		//			why.append(" (");
-		//			why.append(openod);
-		//			why.append(" of ");
-		//			why.append(totnod);
-		//			why.append(" backed off)");
-//		}
-		//	}
+		//    int totnod=((NGRoutingTable)Main.origRT).countConnectedN
+		//        odes();
+		//    if(totnod>20) {
+		//        int openod=((NGRoutingTable)Main.origRT).countUn
+		//            backedOffNodes();
+		//        double load=(double)(totnod-openod)/(double)totn
+		//            od;
+		//        // multiply by 1/x , where x is the desired percent
+		//        // of backed off routes. As of 08/26, anything below
+		//        // about 70% is foolhardy
+		//        load *= 1.333 ; // target 75% closed (25% open)
+//            if (load > overloadLow && ret < load)
+//                ret = load;
+		//        if (why != null) {
+		//            why.append("<br />Load due to backoff = ");
+		//            why.append(nfp.format(load));
+		//            why.append(" (");
+		//            why.append(openod);
+		//            why.append(" of ");
+		//            why.append(totnod);
+		//            why.append(" backed off)");
+//        }
+		//    }
 		//}
 
 		if (logOutputBytes
@@ -4462,304 +4462,304 @@
 				ret = load;
 		}
 
-        if (doCPULoad && File.separator.equals("/") && forRateLimiting) {
-            if (now - lastCPULoadEstimateTime > 1000) {
-                try {
-                    lastCPULoadEstimateTime = now;
-                    if (tsNew == null) {
-                        tsOld.read(proc);
-                        tsNew = new TickStat();
-                    } else {
-                        if (!tsNew.read(proc)) {
-                            logger.log(this, "Failed to parse /proc",
-                                    Logger.MINOR);
-                        }
-                        lastCPULoadEstimate = tsNew.calculate(tsOld);
-                        tsOld.copyFrom(tsNew);
-                    }
-                } catch (Throwable t) {
-                    lastCPULoadEstimate = 0;
-                    logger.log(this, "Failed real-CPU-load estimation: "
-                            + t, t, Logger.NORMAL);
-                }
-            }
-            float f = (float)(((lastCPULoadEstimate) / 100.0F) / 0.75); 
-            // target 75% cpu usage - FIXME
-            if(why != null) {
-                why.append("<br />\nLoad due to CPU usage = ");
-                why.append(nfp.format(f));
-                why.append(" = ");
-                why.append(lastCPULoadEstimate);
-                why.append("% / 0.75");
-            }
-            
-            if (f > ret) ret = f;
+		if (doCPULoad && File.separator.equals("/") && forRateLimiting) {
+			if (now - lastCPULoadEstimateTime > 1000) {
+				try {
+					lastCPULoadEstimateTime = now;
+					if (tsNew == null) {
+						tsOld.read(proc);
+						tsNew = new TickStat();
+					} else {
+						if (!tsNew.read(proc)) {
+							logger.log(this, "Failed to parse /proc",
+									Logger.MINOR);
+						}
+						lastCPULoadEstimate = tsNew.calculate(tsOld);
+						tsOld.copyFrom(tsNew);
+					}
+				} catch (Throwable t) {
+					lastCPULoadEstimate = 0;
+					logger.log(this, "Failed real-CPU-load estimation: "
+							+ t, t, Logger.NORMAL);
+				}
+			}
+			float f = (float)(((lastCPULoadEstimate) / 100.0F) / 0.75); 
+			// target 75% cpu usage - FIXME
+			if(why != null) {
+				why.append("<br />\nLoad due to CPU usage = ");
+				why.append(nfp.format(f));
+				why.append(" = ");
+				why.append(lastCPULoadEstimate);
+				why.append("% / 0.75");
+			}
+			
+			if (f > ret) ret = f;
 
-        }
+		}
 		// Predicted inbound bandwidth load
 		if(Main.origRT instanceof NGRoutingTable && forRateLimiting) {
-		    double sentRequestsHour = sentRequestCounter.getExtrapolatedEventsPerHour();
-		    double pTransfer = ((NGRoutingTable)Main.origRT).pTransferGivenRequest();
-		    double stdFileSize = calculateStandardFileSize();
-		    double bytesExpected = sentRequestsHour * pTransfer *
-		    	stdFileSize;
-		    double maxBytesPerMinute;
-		    String reason;
-		    if(inputBandwidthLimit > 0) {
-		        maxBytesPerMinute = inputBandwidthLimit * 60;
-		        reason = " (set input limit) ";
-		    } else {
-		        maxBytesPerMinute = tcpConnection.maxSeenIncomingBytesPerMinute();
-		        reason = " (max observed bytes per minute) ";
-		        // Assume output is at least as wide as input
-		        // If this is wrong, set inputBandwidthLimit
-		        double altMaxBytesPerMinute = outputBandwidthLimit * 60 * 4;
-		        if(altMaxBytesPerMinute > maxBytesPerMinute) {
-		            maxBytesPerMinute = altMaxBytesPerMinute;
-		        	reason = " (output limit assumed smaller than input capacity) ";
-		        }
-		    }
-		    double maxBytes = maxBytesPerMinute * (60 * 1.1);
-		    double myLoad = maxBytes==0?0:bytesExpected / maxBytes;
-		    if(ret < myLoad) ret = myLoad;
-		    if(why != null) {
-                why.append("<br />\nLoad due to expected inbound transfers: ");
-		        why.append(nfp.format(myLoad));
-		        why.append(" because: ");
-		        why.append(sentRequestsHour);
-		        why.append(" req/hr * ");
-		        why.append(pTransfer);
-		        why.append(" (pTransfer) * ");
-		        why.append(stdFileSize);
-		        why.append(" bytes = ");
-		        why.append((long)bytesExpected);
-		        why.append(" bytes/hr expected from current requests, but maxInputBytes/minute = ");
-		        why.append((long)maxBytesPerMinute);
-		        why.append(reason);
-		        why.append(" * 60 * 1.1 = ");
-		        why.append((long)maxBytes);
-		        why.append(" bytes/hr target");
-		    }
+			double sentRequestsHour = sentRequestCounter.getExtrapolatedEventsPerHour();
+			double pTransfer = ((NGRoutingTable)Main.origRT).pTransferGivenRequest();
+			double stdFileSize = calculateStandardFileSize();
+			double bytesExpected = sentRequestsHour * pTransfer *
+				stdFileSize;
+			double maxBytesPerMinute;
+			String reason;
+			if(inputBandwidthLimit > 0) {
+				maxBytesPerMinute = inputBandwidthLimit * 60;
+				reason = " (set input limit) ";
+			} else {
+				maxBytesPerMinute = tcpConnection.maxSeenIncomingBytesPerMinute();
+				reason = " (max observed bytes per minute) ";
+				// Assume output is at least as wide as input
+				// If this is wrong, set inputBandwidthLimit
+				double altMaxBytesPerMinute = outputBandwidthLimit * 60 * 4;
+				if(altMaxBytesPerMinute > maxBytesPerMinute) {
+					maxBytesPerMinute = altMaxBytesPerMinute;
+					reason = " (output limit assumed smaller than input capacity) ";
+				}
+			}
+			double maxBytes = maxBytesPerMinute * (60 * 1.1);
+			double myLoad = maxBytes==0?0:bytesExpected / maxBytes;
+			if(ret < myLoad) ret = myLoad;
+			if(why != null) {
+				why.append("<br />\nLoad due to expected inbound transfers: ");
+				why.append(nfp.format(myLoad));
+				why.append(" because: ");
+				why.append(sentRequestsHour);
+				why.append(" req/hr * ");
+				why.append(pTransfer);
+				why.append(" (pTransfer) * ");
+				why.append(stdFileSize);
+				why.append(" bytes = ");
+				why.append((long)bytesExpected);
+				why.append(" bytes/hr expected from current requests, but maxInputBytes/minute = ");
+				why.append((long)maxBytesPerMinute);
+				why.append(reason);
+				why.append(" * 60 * 1.1 = ");
+				why.append((long)maxBytes);
+				why.append(" bytes/hr target");
+			}
 		}
 		// Predicted outbound bandwidth load
 		if(Main.origRT instanceof NGRoutingTable && forRateLimiting &&
-		        outputBandwidthLimit > 0 && acceptedExternalRequestCounter.countEvents() > 10) {
-		    double receivedRequestsHour = acceptedExternalRequestCounter.getExtrapolatedEventsPerHour();
-		    double pTransfer = ((NGRoutingTable)Main.origRT).pTransferGivenInboundRequest();
-		    double stdFileSize = calculateStandardFileSize();
-		    double bytesExpected = receivedRequestsHour * pTransfer *
-		    	stdFileSize;
-		    double maxBytesPerMinute;
-		    maxBytesPerMinute = outputBandwidthLimit * 60 * 0.7; // assume significant overhead
-		    double maxBytes = maxBytesPerMinute * 60;
-		    double myLoad = maxBytes==0?0:bytesExpected / maxBytes;
-		    if(ret < myLoad) ret = myLoad;
-		    if(why != null) {
-                why.append("<br />\nLoad due to expected outbound transfers: ");
-		        why.append(nfp.format(myLoad));
-		        why.append(" because: ");
-		        why.append(receivedRequestsHour);
-		        why.append(" req/hr * ");
-		        why.append(pTransfer);
-		        why.append("(");
-		        why.append(((NGRoutingTable)Main.origRT).whyPTransferGivenInboundRequest());
-		        why.append(") (pTransfer) * ");
-		        why.append(stdFileSize);
-		        why.append(" bytes = ");
-		        why.append((long)bytesExpected);
-		        why.append(" bytes/hr expected from current requests, but maxOutputBytes/minute = ");
-		        why.append((long)maxBytesPerMinute);
-		        why.append(" * 60 = ");
-		        why.append((long)maxBytes);
-		        why.append(" bytes/hr target");
-		    }
+				outputBandwidthLimit > 0 && acceptedExternalRequestCounter.countEvents() > 10) {
+			double receivedRequestsHour = acceptedExternalRequestCounter.getExtrapolatedEventsPerHour();
+			double pTransfer = ((NGRoutingTable)Main.origRT).pTransferGivenInboundRequest();
+			double stdFileSize = calculateStandardFileSize();
+			double bytesExpected = receivedRequestsHour * pTransfer *
+				stdFileSize;
+			double maxBytesPerMinute;
+			maxBytesPerMinute = outputBandwidthLimit * 60 * 0.7; // assume significant overhead
+			double maxBytes = maxBytesPerMinute * 60;
+			double myLoad = maxBytes==0?0:bytesExpected / maxBytes;
+			if(ret < myLoad) ret = myLoad;
+			if(why != null) {
+				why.append("<br />\nLoad due to expected outbound transfers: ");
+				why.append(nfp.format(myLoad));
+				why.append(" because: ");
+				why.append(receivedRequestsHour);
+				why.append(" req/hr * ");
+				why.append(pTransfer);
+				why.append("(");
+				why.append(((NGRoutingTable)Main.origRT).whyPTransferGivenInboundRequest());
+				why.append(") (pTransfer) * ");
+				why.append(stdFileSize);
+				why.append(" bytes = ");
+				why.append((long)bytesExpected);
+				why.append(" bytes/hr expected from current requests, but maxOutputBytes/minute = ");
+				why.append((long)maxBytesPerMinute);
+				why.append(" * 60 = ");
+				why.append((long)maxBytes);
+				why.append(" bytes/hr target");
+			}
 		}
-//		if(forRateLimiting) {
-//		    // Propagation
-//		    double outgoingRequestRate = sentRequestCounter.getExtrapolatedEventsPerHour();
-//		    double incomingRequestRate = acceptedExternalRequestCounter.getExtrapolatedEventsPerHour();
-//		    /**
-//		     * Don't use it until we have received a certain number of requests.
-//		     * Otherwise fetches on startup will cause MAJOR problems.
-//		     */
-//		    if(acceptedExternalRequestCounter.countEvents() > 10) {
-//		        double myLoad = outgoingRequestRate / incomingRequestRate;
-//		        if(ret < myLoad) ret = myLoad;
-//		        if(why != null) {
-//		            why.append("<br />Load due to propagation = ");
-//		            why.append(nfp.format(myLoad));
-//		            why.append(" = ");
-//		            why.append(outgoingRequestRate);
-//		            why.append(" / ");
-//		            why.append(incomingRequestRate);
-//		        }
-//		    }
-//		}
-//		
-//		// Backoff load
-//		if (forRateLimiting) {
-//			double meanLogBackoffLoad = Core.diagnostics.getContinuousValue("logBackoffLoad", Diagnostics.MINUTE, Diagnostics.MEAN_VALUE);
-//			if(!(Double.isNaN(meanLogBackoffLoad))) {
-//				double estBackoffLoad = Math.exp(meanLogBackoffLoad);
-//				if(estBackoffLoad > ret) ret = estBackoffLoad;
-//				if(why != null) {
+//        if(forRateLimiting) {
+//            // Propagation
+//            double outgoingRequestRate = sentRequestCounter.getExtrapolatedEventsPerHour();
+//            double incomingRequestRate = acceptedExternalRequestCounter.getExtrapolatedEventsPerHour();
+//            /**
+//             * Don't use it until we have received a certain number of requests.
+//             * Otherwise fetches on startup will cause MAJOR problems.
+//             */
+//            if(acceptedExternalRequestCounter.countEvents() > 10) {
+//                double myLoad = outgoingRequestRate / incomingRequestRate;
+//                if(ret < myLoad) ret = myLoad;
+//                if(why != null) {
+//                    why.append("<br />Load due to propagation = ");
+//                    why.append(nfp.format(myLoad));
+//                    why.append(" = ");
+//                    why.append(outgoingRequestRate);
+//                    why.append(" / ");
+//                    why.append(incomingRequestRate);
+//                }
+//            }
+//        }
+//        
+//        // Backoff load
+//        if (forRateLimiting) {
+//            double meanLogBackoffLoad = Core.diagnostics.getContinuousValue("logBackoffLoad", Diagnostics.MINUTE, Diagnostics.MEAN_VALUE);
+//            if(!(Double.isNaN(meanLogBackoffLoad))) {
+//                double estBackoffLoad = Math.exp(meanLogBackoffLoad);
+//                if(estBackoffLoad > ret) ret = estBackoffLoad;
+//                if(why != null) {
 //                  why.append("<br />\nLoad due to backoff: ");
-//					why.append(nfp.format(estBackoffLoad));
-//					why.append(" = e^");
-//					why.append(meanLogBackoffLoad);
-//					why.append(" (average logBackoffLoad)");
-//				}
-//			}
-//		}
+//                    why.append(nfp.format(estBackoffLoad));
+//                    why.append(" = e^");
+//                    why.append(meanLogBackoffLoad);
+//                    why.append(" (average logBackoffLoad)");
+//                }
+//            }
+//        }
 		
 		// Allow >100% load either way
-//		if ((!forRateLimiting) && ret > 1.0f) {
-//		    ret = 1.0f;
-//		}
+//        if ((!forRateLimiting) && ret > 1.0f) {
+//            ret = 1.0f;
+//        }
 
 		synchronized(loadSync) {
-		    now = System.currentTimeMillis();
-		    if(forRateLimiting) {
-		        lastEstimatedRateLimitingLoad = (float) ret;
-		        lastCalculatedRateLimitingLoad = now;
-		    } else {
-		        lastEstimatedLoad = (float) ret;
-		        lastCalculatedEstimatedLoad = now;
-		    }
+			now = System.currentTimeMillis();
+			if(forRateLimiting) {
+				lastEstimatedRateLimitingLoad = (float) ret;
+				lastCalculatedRateLimitingLoad = now;
+			} else {
+				lastEstimatedLoad = (float) ret;
+				lastCalculatedEstimatedLoad = now;
+			}
 		}
 		
 		return (float) ret;
 	}
 
-    private double calculateLoadForUnit(String name, String units, StringBuffer why, 
-            double delay, int delayCutoff, int successCutoff, 
-            boolean forRateLimiting) {
-        double load;
-        double denom = successCutoff - delayCutoff;
-        if(forRateLimiting) {
-            load = delay / delayCutoff;
-        } else {
-            load = overloadLow
-            + (1 - overloadLow)
-            * (delay - delayCutoff)
-            / (denom == 0.0 ? 1.0 : denom);
-        }
-        if (why != null) {
-            why.append("<br />\nLoad due to "+name+" = ");
-            why.append(nfp.format(load) + " = ");
-            if(forRateLimiting) {
-                why.append((int)delay + units + " / " +
-                        delayCutoff + units);
-                why.append(load > overloadLow ? " > " : " <= ");
-                why.append("overloadLow (");
-                why.append(nfp.format(overloadLow));
-            } else {
-                why.append(
-                        nfp.format(overloadLow)
-                        + " + "
-                        + nfp.format(1 - overloadLow)
-                        + " * ("
-                        + nf3.format(delay)
+	private double calculateLoadForUnit(String name, String units, StringBuffer why, 
+			double delay, int delayCutoff, int successCutoff, 
+			boolean forRateLimiting) {
+		double load;
+		double denom = successCutoff - delayCutoff;
+		if(forRateLimiting) {
+			load = delay / delayCutoff;
+		} else {
+			load = overloadLow
+			+ (1 - overloadLow)
+			* (delay - delayCutoff)
+			/ (denom == 0.0 ? 1.0 : denom);
+		}
+		if (why != null) {
+			why.append("<br />\nLoad due to "+name+" = ");
+			why.append(nfp.format(load) + " = ");
+			if(forRateLimiting) {
+				why.append((int)delay + units + " / " +
+						delayCutoff + units);
+				why.append(load > overloadLow ? " > " : " <= ");
+				why.append("overloadLow (");
+				why.append(nfp.format(overloadLow));
+			} else {
+				why.append(
+						nfp.format(overloadLow)
+						+ " + "
+						+ nfp.format(1 - overloadLow)
+						+ " * ("
+						+ nf3.format(delay)
 						+ units
-                        + " - "
-                        + nf3.format(delayCutoff)
+						+ " - "
+						+ nf3.format(delayCutoff)
 						+ units
-                        + ") / "
-                        + nf3.format(denom)
+						+ ") / "
+						+ nf3.format(denom)
 						+ units);
-            }
-            why.append(")");
-        }
+			}
+			why.append(")");
+		}
 
-        return load;
-    }
+		return load;
+	}
 
-    double lastGlobalQuota;
-    long lastGlobalQuotaTime;
-    Object lastGlobalQuotaSync = new Object();
-    
+	double lastGlobalQuota;
+	long lastGlobalQuotaTime;
+	Object lastGlobalQuotaSync = new Object();
+	
 	/**
 	 * @return the target total number of queries per hour that the
 	 * node can handle, based on the current load and traffic levels.
 	 * If load is zero returns positive infinity.
 	 */
 	public double getGlobalQuota() {
-	    /** Cache it for 2 reasons:
-	     * 1. Save CPU usage.
-	     * 2. Make the averages more or less averages over time, rather than
-	     * being biased by message send rates.
-	     */
-	    synchronized(lastGlobalQuotaSync) {
-	        if(System.currentTimeMillis() < lastGlobalQuotaTime + 5000)
-	            return lastGlobalQuota;
-	    }
-	    // First calculate the total number of queries received per hour
-	    // This is a kind of average, necessarily...
-	    double requestsPerHour = receivedRequestCounter.getExtrapolatedEventsPerHour();
-	    Core.diagnostics.occurrenceContinuous("estimatedIncomingRequestsPerHour",
-	            requestsPerHour);
-	    if(Double.isInfinite(requestsPerHour)) {
-	        return Double.POSITIVE_INFINITY;
-	    }
-	    double load = estimatedLoad(true);
-	    /** DO NOT average load.
-	     * Why?
-	     * If an external stimulus causes a slightly increased load for
-	     * a while, and traffic starts to fall, and then the external stimulus
-	     * is taken away, traffic will CONTINUE FALLING for as long as it 
-	     * takes for the load average to come back down to below 1.0.
-	     */
-	    Core.diagnostics.occurrenceContinuous("rateLimitingLoad", load);
-//	    try {
-//	    loadAverager.report(rawLoad);
-//	    } catch (IllegalArgumentException e) {
-//	        logger.log(this, "Caught exception reporting load to load averager",e,
-//	                Logger.NORMAL);
-//	    }
-//	    double load = loadAverager.currentValue();
-//	    Core.diagnostics.occurrenceContinuous("rateLimitingLoad", load);
-	    if(load == 0.0) return Double.POSITIVE_INFINITY;
-	    double ret = requestsPerHour / load; 
-	    Core.diagnostics.occurrenceContinuous("globalQuotaPerHourRaw", ret);
-	    // Now clip it to the maximum the link can sustain
-	    double wasGlobalQuota = ret;
-	    double maxGlobalQuota = getMaxGlobalQuota();
-	    if(ret > maxGlobalQuota) ret = maxGlobalQuota;
-	    logger.log(this, "getGlobalQuota(): requests per hour: "+
-	            requestsPerHour+", load: "+load+
-	            ", raw globalQuota="+wasGlobalQuota+", maxGlobalQuota="+
-	            maxGlobalQuota+", unaveraged globalQuota="+ret, Logger.MINOR);
-	    // Now we DEFINITELY need to average the output
-	    globalQuotaAverager.report(ret);
-	    ret = globalQuotaAverager.currentValue();
-	    Core.diagnostics.occurrenceContinuous("globalQuotaPerHour", ret);
-	    logger.log(this, "getGlobalQuota() returning "+ret, Logger.MINOR);
-	    synchronized(lastGlobalQuotaSync) {
-	        lastGlobalQuota = ret;
-	        lastGlobalQuotaTime = System.currentTimeMillis();
-	    }
-	    return ret;
+		/** Cache it for 2 reasons:
+		 * 1. Save CPU usage.
+		 * 2. Make the averages more or less averages over time, rather than
+		 * being biased by message send rates.
+		 */
+		synchronized(lastGlobalQuotaSync) {
+			if(System.currentTimeMillis() < lastGlobalQuotaTime + 5000)
+				return lastGlobalQuota;
+		}
+		// First calculate the total number of queries received per hour
+		// This is a kind of average, necessarily...
+		double requestsPerHour = receivedRequestCounter.getExtrapolatedEventsPerHour();
+		Core.diagnostics.occurrenceContinuous("estimatedIncomingRequestsPerHour",
+				requestsPerHour);
+		if(Double.isInfinite(requestsPerHour)) {
+			return Double.POSITIVE_INFINITY;
+		}
+		double load = estimatedLoad(true);
+		/** DO NOT average load.
+		 * Why?
+		 * If an external stimulus causes a slightly increased load for
+		 * a while, and traffic starts to fall, and then the external stimulus
+		 * is taken away, traffic will CONTINUE FALLING for as long as it 
+		 * takes for the load average to come back down to below 1.0.
+		 */
+		Core.diagnostics.occurrenceContinuous("rateLimitingLoad", load);
+//        try {
+//        loadAverager.report(rawLoad);
+//        } catch (IllegalArgumentException e) {
+//            logger.log(this, "Caught exception reporting load to load averager",e,
+//                    Logger.NORMAL);
+//        }
+//        double load = loadAverager.currentValue();
+//        Core.diagnostics.occurrenceContinuous("rateLimitingLoad", load);
+		if(load == 0.0) return Double.POSITIVE_INFINITY;
+		double ret = requestsPerHour / load; 
+		Core.diagnostics.occurrenceContinuous("globalQuotaPerHourRaw", ret);
+		// Now clip it to the maximum the link can sustain
+		double wasGlobalQuota = ret;
+		double maxGlobalQuota = getMaxGlobalQuota();
+		if(ret > maxGlobalQuota) ret = maxGlobalQuota;
+		logger.log(this, "getGlobalQuota(): requests per hour: "+
+				requestsPerHour+", load: "+load+
+				", raw globalQuota="+wasGlobalQuota+", maxGlobalQuota="+
+				maxGlobalQuota+", unaveraged globalQuota="+ret, Logger.MINOR);
+		// Now we DEFINITELY need to average the output
+		globalQuotaAverager.report(ret);
+		ret = globalQuotaAverager.currentValue();
+		Core.diagnostics.occurrenceContinuous("globalQuotaPerHour", ret);
+		logger.log(this, "getGlobalQuota() returning "+ret, Logger.MINOR);
+		synchronized(lastGlobalQuotaSync) {
+			lastGlobalQuota = ret;
+			lastGlobalQuotaTime = System.currentTimeMillis();
+		}
+		return ret;
 	}
 	
 	/**
-     * @return the upper limit on the globalQuota, calculated from
-     * the output and input bandwidth limits.
-     */
-    public double getMaxGlobalQuota() {
-        int limit = 0;
-        if(outputBandwidthLimit > 0) limit = outputBandwidthLimit;
-        if(inputBandwidthLimit > 0 && inputBandwidthLimit < outputBandwidthLimit)
-            limit = inputBandwidthLimit;
-	    if(limit > 0) {
-		    double pTransfer = ((NGRoutingTable)Main.origRT).pTransferGivenInboundRequest();
-	        double maxGlobalQuota = (limit * 60 * 60) /
-	        	(calculateStandardFileSize() * pTransfer);
-	        return maxGlobalQuota;
-	    }
-	    return Double.MAX_VALUE;
-    }
+	 * @return the upper limit on the globalQuota, calculated from
+	 * the output and input bandwidth limits.
+	 */
+	public double getMaxGlobalQuota() {
+		int limit = 0;
+		if(outputBandwidthLimit > 0) limit = outputBandwidthLimit;
+		if(inputBandwidthLimit > 0 && inputBandwidthLimit < outputBandwidthLimit)
+			limit = inputBandwidthLimit;
+		if(limit > 0) {
+			double pTransfer = ((NGRoutingTable)Main.origRT).pTransferGivenInboundRequest();
+			double maxGlobalQuota = (limit * 60 * 60) /
+				(calculateStandardFileSize() * pTransfer);
+			return maxGlobalQuota;
+		}
+		return Double.MAX_VALUE;
+	}
 
-    private void accept(
+	private void accept(
 		Key searchKey,
 		int hopsToLive,
 		String diagAddr,
@@ -4775,16 +4775,16 @@
 		int hopsToLive,
 		String diagAddr,
 		String verstr) {
-	    // Do nothing
+		// Do nothing
 	}
 
 	private static final int DEFAULT_FILE_SIZE = 350000;
 	// typical value 13/3/04
 
 	public static long calculateStandardFileSize(Node node) {
-	    if (node == null)
-	        return DEFAULT_FILE_SIZE;
-	    else return node.calculateStandardFileSize();
+		if (node == null)
+			return DEFAULT_FILE_SIZE;
+		else return node.calculateStandardFileSize();
 	}
 	
 	long lastCalculatedStandardFileSizeTime = -1;
@@ -4797,7 +4797,7 @@
 	//unable to ask the store (== if this NGRT doesn't know what node it is
 	// used in)
 	public long calculateStandardFileSize() {
-	        long now = System.currentTimeMillis();
+			long now = System.currentTimeMillis();
 		//Avoid contention for the lastUpdatedNewNodeStatsLock lock if possible
 		if (isRecalculatingStandardFileSize || now - lastCalculatedStandardFileSizeTime < 60*1000)
 			return lastStandardFileSize;
@@ -4805,25 +4805,25 @@
 		//Then test again, holding the proper lock, just to be _sure_ that we should run
 		synchronized(fileSizeTimestampSync){
 			if (isRecalculatingStandardFileSize || now - lastCalculatedStandardFileSizeTime < 60*1000)
-	            return lastStandardFileSize;
+				return lastStandardFileSize;
 			isRecalculatingStandardFileSize = true;
-	        }
+			}
 		try{
-	        long keys = dir.countKeys();
-	        if (keys > 16) {
-	            lastStandardFileSize = dir.used() / keys;  
-	            lastCalculatedStandardFileSizeTime = now;
-	            return lastStandardFileSize;
-	        } else
-	        	return DEFAULT_FILE_SIZE;
+			long keys = dir.countKeys();
+			if (keys > 16) {
+				lastStandardFileSize = dir.used() / keys;  
+				lastCalculatedStandardFileSizeTime = now;
+				return lastStandardFileSize;
+			} else
+				return DEFAULT_FILE_SIZE;
 		}finally{
 			lastCalculatedStandardFileSizeTime = now;
 			isRecalculatingStandardFileSize = false;
-	    }
+		}
 	}
 
 	public void logRequest(Key k) {
-	    receivedRequestCounter.logEvent();
+		receivedRequestCounter.logEvent();
 	}
 	
 	/**
@@ -4867,16 +4867,16 @@
 				// 1.0 = (almost) never accept
 				double rankFraction;
 				if (Main.origRT instanceof NGRoutingTable &&
-				        searchKey != null) {
-				    /** Selective request accept/reject, based on estimate.
-				     * a.k.a. unobtanium accept.
-				     * 
-				     * We want to accept the top x% of incoming requests, where
-				     * x depends on load, by their estimates (lower is better).
-				     * 
-				     * So we route the request and see what the estimate is for
-				     * the first node on the list.
-				     */
+						searchKey != null) {
+					/** Selective request accept/reject, based on estimate.
+					 * a.k.a. unobtanium accept.
+					 * 
+					 * We want to accept the top x% of incoming requests, where
+					 * x depends on load, by their estimates (lower is better).
+					 * 
+					 * So we route the request and see what the estimate is for
+					 * the first node on the list.
+					 */
 					NGRouting routes =
 						(NGRouting) (Main
 							.origRT
@@ -4885,7 +4885,7 @@
 								hopsToLive,
 								calculateStandardFileSize(),
 								// searchKey.getExpectedTransmissionLength(),
-								       //Don't bias the estimate with the size of the key
+									   //Don't bias the estimate with the size of the key
 								false,
 								false,
 								false,
@@ -4894,19 +4894,19 @@
 					
 					if (routes.getNextRoute() == null){
 						// Sh*t happens
-					    // No currently contactable nodes we could route to
+						// No currently contactable nodes we could route to
 						rankFraction = Math.random();
 						logger.log(this, "Initial getNextRoute() call during load "+
-						        "calculation returned no estimate, using random value "+
-						        "for rankFraktion, routes="+routes, Logger.MINOR);
+								"calculation returned no estimate, using random value "+
+								"for rankFraktion, routes="+routes, Logger.MINOR);
 					} else {
 					double estimate = routes.lastEstimatedTime();
 					routes.terminateNoDiagnostic();
 					rankFraction = getRankFraction(estimate);
 						if(logger.shouldLog(Logger.DEBUG, this))
-						    logger.log(this, "Unobtanium: key=" + searchKey + 
-						            ", hopsToLive=" + hopsToLive + " -> estimate: "
-						            + estimate + " -> rank: " + rankFraction, 
+							logger.log(this, "Unobtanium: key=" + searchKey + 
+									", hopsToLive=" + hopsToLive + " -> estimate: "
+									+ estimate + " -> rank: " + rankFraction, 
 						Logger.MINOR);
 					}
 				} else {
@@ -4915,7 +4915,7 @@
 					// If loadThreshold is higher than load, reject
 					// Therefore loadThreshold high = accept more requests 
 					double loadThreshold =
-					    overloadLow + (1.0-rankFraction) * (overloadHigh - overloadLow);
+						overloadLow + (1.0-rankFraction) * (overloadHigh - overloadLow);
 			
 				logger.log(
 						this,
@@ -5059,16 +5059,16 @@
 	 */
 	public final TrailerWriter sendMessage(
 		Message m,
-	        Identity id,
-	        long timeout)
+			Identity id,
+			long timeout)
 		throws SendFailedException {
 		return connections.sendMessage(
 			m,
-	            id,
+				id,
 			null,
 			timeout,
-	            PeerPacketMessage.NORMAL,
-	            presentations.getDefault());
+				PeerPacketMessage.NORMAL,
+				presentations.getDefault());
 	}
 
 	
@@ -5132,26 +5132,26 @@
 	}
 
 	public final void sendMessageAsync(
-	        Message m,
-	        Identity id,
-	        long timeout,
-	        MessageSendCallback cb) {
-	    connections.sendMessageAsync(
-	            m,
-	            id,
-	            null,
-	            cb,
-	            timeout,
-	            PeerPacketMessage.NORMAL);
+			Message m,
+			Identity id,
+			long timeout,
+			MessageSendCallback cb) {
+		connections.sendMessageAsync(
+				m,
+				id,
+				null,
+				cb,
+				timeout,
+				PeerPacketMessage.NORMAL);
 	}
 
 	public final void sendMessageAsync(
 		Message m,
-	        Identity id,
-	        int msgPrio,
-	        long timeout,
-	        MessageSendCallback cb) {
-	    connections.sendMessageAsync(m, id, null, cb, timeout, msgPrio);
+			Identity id,
+			int msgPrio,
+			long timeout,
+			MessageSendCallback cb) {
+		connections.sendMessageAsync(m, id, null, cb, timeout, msgPrio);
 	}
 	
 	public final void sendMessageAsync(
@@ -5191,8 +5191,8 @@
 		Core.logger.log(Node.class, "Perturbing HTL: htl="+htl, Logger.MINOR);
 		if (maxHopsToLive == 0) return htl;
 		if (htl > 3 && ((float)htl / (float)maxHopsToLive) > 0.5) {
-		    if(htl > (maxHopsToLive - 2)) htl = (maxHopsToLive - 2);
-		    Core.logger.log(Node.class, "HTL now "+htl, Logger.MINOR);
+			if(htl > (maxHopsToLive - 2)) htl = (maxHopsToLive - 2);
+			Core.logger.log(Node.class, "HTL now "+htl, Logger.MINOR);
 			f = getRandSource().nextFloat();
 			if (f < 0.2)
 				htl += 2;
@@ -5284,15 +5284,15 @@
 	 *            FieldSet of initial estimator, or null
 	 */
 	public void reference(Key k, Identity id, 
-	        NodeReference nr, FieldSet estimator) {
+			NodeReference nr, FieldSet estimator) {
 		boolean logDEBUG = logger.shouldLog(Logger.DEBUG, this);
 		if(logDEBUG) logger.log(this, "referencing: "+k+", "+nr+", "+
 					estimator, Logger.DEBUG);
 		if(id == null) id = nr.getIdentity();
 		if(id == null) {
-		    Core.logger.log(this, "Referencing: "+k+","+id+","+nr+","+estimator,
-		            new Exception("debug"), Logger.ERROR);
-		    return;
+			Core.logger.log(this, "Referencing: "+k+","+id+","+nr+","+estimator,
+					new Exception("debug"), Logger.ERROR);
+			return;
 		}
 		rt.reference(k, id, nr, estimator);
 		if(logDEBUG) logger.log(this, "adding peer for: "+id+": "+ nr,
@@ -5310,24 +5310,24 @@
 	 * called on startup. Also creates PeerHandlers for each.
 	 */
 	public void scheduleOpenAllConnections() {
-	    logger.log(this, "Scheduling open on all connections", Logger.MINOR);
-	    RTDiagSnapshot snap =
-	        rt.getSnapshot(true);
-	    IdRefPair[] nodes = snap.getIdRefPairs();
-	    for(int i=0;i<nodes.length;i++)
-	        connections.makePeerHandler(nodes[i].id, nodes[i].ref, 
-	                presentations.getDefault());
-	    logger.log(this, "Scheduling open on all "+nodes.length+" connections",
+		logger.log(this, "Scheduling open on all connections", Logger.MINOR);
+		RTDiagSnapshot snap =
+			rt.getSnapshot(true);
+		IdRefPair[] nodes = snap.getIdRefPairs();
+		for(int i=0;i<nodes.length;i++)
+			connections.makePeerHandler(nodes[i].id, nodes[i].ref, 
+					presentations.getDefault());
+		logger.log(this, "Scheduling open on all "+nodes.length+" connections",
 				Logger.MINOR);
-	    rescheduleConnectionOpener();
+		rescheduleConnectionOpener();
 		logger.log(this, "Scheduled open on all connections",
 			Logger.MINOR);
 	}
 
-    public void rescheduleConnectionOpener() {
-        if(connectionOpener != null)
-            connectionOpener.reschedule();
-    }
+	public void rescheduleConnectionOpener() {
+		if(connectionOpener != null)
+			connectionOpener.reschedule();
+	}
 
 	public int getMaxPacketLength() {
 		if (obw != null)
@@ -5336,86 +5336,86 @@
 			return 1492; // fixme
 	}
 
-    /**
-     * @return
-     */
-    public int getMaxTrailerChunkSize() {
-        if (obw != null) {
-            int i = obw.maximumPacketLength();
-            i = i / 5;
-            /** Impose a minimum:
-             * The chunk overhead is 10 bytes
-             * Lets say the maximum acceptable overhead is 5%
-             * That makes 200 bytes a reasonable minimum.
-             */
-            if(i < 200) i = 200;
-            return i;
-        } else {
-            return 500;
-        }
-    }
+	/**
+	 * @return
+	 */
+	public int getMaxTrailerChunkSize() {
+		if (obw != null) {
+			int i = obw.maximumPacketLength();
+			i = i / 5;
+			/** Impose a minimum:
+			 * The chunk overhead is 10 bytes
+			 * Lets say the maximum acceptable overhead is 5%
+			 * That makes 200 bytes a reasonable minimum.
+			 */
+			if(i < 200) i = 200;
+			return i;
+		} else {
+			return 500;
+		}
+	}
 
-    long lastReportedRequestInterval = -1;
-    
+	long lastReportedRequestInterval = -1;
+	
 	public double getBytesSentLastMinute()
 	{
 		return outputBytesLastMinute.currentSum();
 	}
 
-    /**
-     * @param success whether the request succeeded
-     * @param backedOffCount the number of nodes that were tried and unavailable
-     * due to backoff or rate limiting, before we reached a node that eventually
-     * sent us a DNF or a transfer.
-     */
-    public void routingRequestEndedWithBackedOffCount(boolean success, int backedOffCount) {
-        if(backedOffCount > rtMaxNodes) backedOffCount = rtMaxNodes;
-        if(backedOffCount < 0) backedOffCount = 0;
-        synchronized(Node.syncCountsByBackoffCount) {
-            if(success)
-                Node.successesByBackoffCount[backedOffCount]++;
-            else
-                Node.failuresByBackoffCount[backedOffCount]++;
-        }
-    }
-    
-    public String routingResultsByBackoffCount() {
-        StringBuffer sb = new StringBuffer();
-        synchronized(Node.syncCountsByBackoffCount) {
-            sb.append("Backoff count       Successes      Failures\n");
-            for(int i=0;i<=rtMaxNodes;i++) {
-                long successes = Node.successesByBackoffCount[i];
-                long failures = Node.failuresByBackoffCount[i];
-                String s1 = Integer.toString(i);
-                sb.append(s1);
-                for(int j=0;j<20-s1.length();j++) sb.append(' ');
-                s1 = Long.toString(successes);
-                sb.append(s1);
-                for(int j=0;j<20-s1.length();j++) sb.append(' ');
-                s1 = Long.toString(failures);
-                sb.append(s1);
-                for(int j=0;j<20-s1.length();j++) sb.append(' ');
-                sb.append(Double.toString(successes/((double)failures+successes)));
-                sb.append('\n');
-            }
-        }
-        return sb.toString();
-    }
+	/**
+	 * @param success whether the request succeeded
+	 * @param backedOffCount the number of nodes that were tried and unavailable
+	 * due to backoff or rate limiting, before we reached a node that eventually
+	 * sent us a DNF or a transfer.
+	 */
+	public void routingRequestEndedWithBackedOffCount(boolean success, int backedOffCount) {
+		if(backedOffCount > rtMaxNodes) backedOffCount = rtMaxNodes;
+		if(backedOffCount < 0) backedOffCount = 0;
+		synchronized(Node.syncCountsByBackoffCount) {
+			if(success)
+				Node.successesByBackoffCount[backedOffCount]++;
+			else
+				Node.failuresByBackoffCount[backedOffCount]++;
+		}
+	}
+	
+	public String routingResultsByBackoffCount() {
+		StringBuffer sb = new StringBuffer();
+		synchronized(Node.syncCountsByBackoffCount) {
+			sb.append("Backoff count       Successes      Failures\n");
+			for(int i=0;i<=rtMaxNodes;i++) {
+				long successes = Node.successesByBackoffCount[i];
+				long failures = Node.failuresByBackoffCount[i];
+				String s1 = Integer.toString(i);
+				sb.append(s1);
+				for(int j=0;j<20-s1.length();j++) sb.append(' ');
+				s1 = Long.toString(successes);
+				sb.append(s1);
+				for(int j=0;j<20-s1.length();j++) sb.append(' ');
+				s1 = Long.toString(failures);
+				sb.append(s1);
+				for(int j=0;j<20-s1.length();j++) sb.append(' ');
+				sb.append(Double.toString(successes/((double)failures+successes)));
+				sb.append('\n');
+			}
+		}
+		return sb.toString();
+	}
 
-    /**
-     * @return
-     */
-    public double getActualRequestsPerHour() {
-        return receivedRequestCounter.getExtrapolatedEventsPerHour();
-    }
+	/**
+	 * @return
+	 */
+	public double getActualRequestsPerHour() {
+		return receivedRequestCounter.getExtrapolatedEventsPerHour();
+	}
 
-    /**
-     * @return whether we want a single incoming connection, right now.
-     */
-    public boolean wantIncomingConnection() {
-        // Is the last node in the RT newbie?
-        return connections.wantUnkeyedReference();
-    }
+	/**
+	 * @return whether we want a single incoming connection, right now.
+	 */
+	public boolean wantIncomingConnection() {
+		// Is the last node in the RT newbie?
+		return connections.wantUnkeyedReference();
+	}
 
 	/**
 	 * @return the highest seen build number for nodes of the same
@@ -5430,49 +5430,49 @@
 		return new NodeBackgroundInserter(i,j,factory,bf2);
 	}
 
-    /**
-     * @return true if this particular request should be routed 
-     * to the newest node first.
-     */
-    public static boolean shouldRouteByNewness() {
-        return (getRandSource().nextInt(20) == 0);
-    }
+	/**
+	 * @return true if this particular request should be routed 
+	 * to the newest node first.
+	 */
+	public static boolean shouldRouteByNewness() {
+		return (getRandSource().nextInt(20) == 0);
+	}
 
-    /**
-     * Get a string-format address for a given identity
-     * @param origPeer
-     * @return
-     */
-    public String getStringAddress(Identity origPeer) {
-        NodeReference ref = rt.getNodeReference(origPeer);
-        if(ref == null) return "(null)";
-        return ref.firstPhysicalToString();
-    }
+	/**
+	 * Get a string-format address for a given identity
+	 * @param origPeer
+	 * @return
+	 */
+	public String getStringAddress(Identity origPeer) {
+		NodeReference ref = rt.getNodeReference(origPeer);
+		if(ref == null) return "(null)";
+		return ref.firstPhysicalToString();
+	}
 
-    static final int PADDING_CHUNK_SIZE = 160;
-    
-    /**
-     * Pad a packet size up to a reasonable level that minimizes the
-     * amount of information given away.
-     * For now, lets round to the nearest PADDING_CHUNK_SIZE bytes.
-     */
-    public static int padPacketSize(int totalLength) {
-        if(totalLength % PADDING_CHUNK_SIZE == 0) return totalLength;
-        return ((totalLength / PADDING_CHUNK_SIZE) + 1) * PADDING_CHUNK_SIZE;
-    }
+	static final int PADDING_CHUNK_SIZE = 160;
+	
+	/**
+	 * Pad a packet size up to a reasonable level that minimizes the
+	 * amount of information given away.
+	 * For now, lets round to the nearest PADDING_CHUNK_SIZE bytes.
+	 */
+	public static int padPacketSize(int totalLength) {
+		if(totalLength % PADDING_CHUNK_SIZE == 0) return totalLength;
+		return ((totalLength / PADDING_CHUNK_SIZE) + 1) * PADDING_CHUNK_SIZE;
+	}
 
-    public static int minPaddingChunkSize() {
-        return PADDING_CHUNK_SIZE;
-    }
+	public static int minPaddingChunkSize() {
+		return PADDING_CHUNK_SIZE;
+	}
 
-    public Checkpointed getRateLimitingWriterCheckpoint() {
-        return rlwc;
-    }
+	public Checkpointed getRateLimitingWriterCheckpoint() {
+		return rlwc;
+	}
 
-    /**
-     * Log a sent request
-     */
-    public void logOutgoingRequest() {
-        sentRequestCounter.logEvent();
-    }
+	/**
+	 * Log a sent request
+	 */
+	public void logOutgoingRequest() {
+		sentRequestCounter.logEvent();
+	}
 }




More information about the cvs mailing list