[freenet-cvs] r13854 - in trunk/freenet/src/freenet: crypt node

nextgens at freenetproject.org nextgens at freenetproject.org
Sat Jun 30 23:39:46 UTC 2007


Author: nextgens
Date: 2007-06-30 23:39:45 +0000 (Sat, 30 Jun 2007)
New Revision: 13854

Modified:
   trunk/freenet/src/freenet/crypt/Yarrow.java
   trunk/freenet/src/freenet/node/Node.java
Log:
Yarrow: save the seedfile in any case when the node exits

Modified: trunk/freenet/src/freenet/crypt/Yarrow.java
===================================================================
--- trunk/freenet/src/freenet/crypt/Yarrow.java	2007-06-30 23:28:57 UTC (rev 13853)
+++ trunk/freenet/src/freenet/crypt/Yarrow.java	2007-06-30 23:39:45 UTC (rev 13854)
@@ -56,7 +56,7 @@
 	private static final int Pg = 10;
 	private final SecureRandom sr;
 
-	private final File seedfile; //A file to which seed data should be dumped periodically
+	public final File seedfile; //A file to which seed data should be dumped periodically
 
 	public Yarrow() {
 		this("prng.seed", "SHA1", "Rijndael",true);
@@ -247,13 +247,19 @@
 
 	private long timeLastWroteSeed = -1;
 	
-	private void write_seed(File filename) {
-		synchronized(this) {
-			long now = System.currentTimeMillis();
-			if(now - timeLastWroteSeed <= 60*60*1000 /* once per hour */) {
-				return;
-			} else
-				timeLastWroteSeed = now;
+	public void write_seed(File filename) {
+		write_seed(filename, false);
+	}
+	
+	public void write_seed(File filename, boolean force) {
+		if(!force) {
+			synchronized(this) {
+				long now = System.currentTimeMillis();
+				if(now - timeLastWroteSeed <= 60*60*1000 /* once per hour */) {
+					return;
+				} else
+					timeLastWroteSeed = now;
+			}
 		}
 		
 		try {

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java	2007-06-30 23:28:57 UTC (rev 13853)
+++ trunk/freenet/src/freenet/node/Node.java	2007-06-30 23:39:45 UTC (rev 13854)
@@ -46,6 +46,7 @@
 import freenet.crypt.DSAPublicKey;
 import freenet.crypt.RandomSource;
 import freenet.crypt.SHA256;
+import freenet.crypt.Yarrow;
 import freenet.io.comm.DMT;
 import freenet.io.comm.DisconnectedException;
 import freenet.io.comm.FreenetInetAddress;
@@ -2249,6 +2250,10 @@
 		isStopping = true;
 		
 		config.store();
+		
+		// TODO: find a smarter way of doing it not involving any casting
+		Yarrow myRandom = (Yarrow) random;
+		myRandom.write_seed(myRandom.seedfile, true);
 	}
 
 	public NodeUpdateManager getNodeUpdater(){




More information about the cvs mailing list