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(){