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


Reply via email to