Author: nextgens
Date: 2006-07-20 20:21:57 +0000 (Thu, 20 Jul 2006)
New Revision: 9675

Modified:
   trunk/freenet/src/freenet/client/async/ResumeException.java
   trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
   trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java
   trunk/freenet/src/freenet/clients/http/PluginToadlet.java
   trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
   trunk/freenet/src/freenet/node/ARKFetcher.java
   trunk/freenet/src/freenet/node/DNSRequester.java
   trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeStarter.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/RequestSender.java
   trunk/freenet/src/freenet/node/SSKInsertSender.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/useralerts/MeaningfulNodeNameUserAlert.java
   trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java
   trunk/freenet/src/freenet/support/RandomAccessFileBucket.java
   trunk/freenet/src/freenet/support/io/CannotCreateFromFieldSetException.java
Log:
"misc":
        * make Node.formpassword static
        * tweak the MeaningfullNodeNameUserAlert so that the name can be 
changed from the alert
        * remove some dead code

Modified: trunk/freenet/src/freenet/client/async/ResumeException.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ResumeException.java 2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/client/async/ResumeException.java 2006-07-20 
20:21:57 UTC (rev 9675)
@@ -7,6 +7,7 @@
  * then we simply restart the request from the beginning.
  */
 public class ResumeException extends Exception {
+       private static final long serialVersionUID = 1L;

        public ResumeException(String msg) {
                super(msg);

Modified: trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConfigToadlet.java   2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/ConfigToadlet.java   2006-07-20 
20:21:57 UTC (rev 9675)
@@ -48,7 +48,7 @@
                }

                String pass = request.getParam("formPassword");
-               if((pass == null) || !pass.equals(node.formPassword)) {
+               if((pass == null) || !pass.equals(Node.formPassword)) {
                        MultiValueTable headers = new MultiValueTable();
                        headers.put("Location", "/config/");
                        ctx.sendReplyHeaders(302, "Found", headers, null, 0);
@@ -126,7 +126,7 @@
                buf.append("</div>\n");
                buf.append("<div class=\"infobox-content\">\n");
                buf.append("<form method=\"post\" action=\".\">");
-               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+node.formPassword+"\">");
+               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+Node.formPassword+"\">");

                for(int i=0; i<sc.length;i++){
                        StringBuffer buf2 = new StringBuffer();

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-07-20 18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-07-20 20:21:57 UTC (rev 9675)
@@ -422,7 +422,7 @@
                                buf.append("<input type=\"submit\" 
name=\"submit\" value=\"Go\" />\n");
                                buf.append("&nbsp;&nbsp;&nbsp;<span 
class=\"darknet_connections\">* Requesting ARK</span>\n");
                        }
-                       buf.append("<input type=\"hidden\" 
name=\"formPassword\" value=\"").append(node.formPassword).append("\" />");
+                       buf.append("<input type=\"hidden\" 
name=\"formPassword\" value=\"").append(Node.formPassword).append("\" />");
                        buf.append("</form>\n");
                }
                buf.append("</div>\n");
@@ -444,7 +444,7 @@
                buf.append("or file:\n");
                buf.append("<input id=\"reffile\" type=\"file\" 
name=\"reffile\" />\n");
                buf.append("<br />\n");
-               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\"").append(node.formPassword).append("\" />");
+               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\"").append(Node.formPassword).append("\" />");
                buf.append("<input type=\"submit\" name=\"add\" value=\"Add\" 
/>\n");
                buf.append("</form>\n");
                buf.append("</div>\n");
@@ -476,7 +476,7 @@
                HTTPRequest request = new HTTPRequest(uri, data, ctx);

                String pass = request.getPartAsString("formPassword", 32);
-               if((pass == null) || !pass.equals(node.formPassword)) {
+               if((pass == null) || !pass.equals(Node.formPassword)) {
                        MultiValueTable headers = new MultiValueTable();
                        headers.put("Location", "/darknet/");
                        ctx.sendReplyHeaders(302, "Found", headers, null, 0);

Modified: trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyToadlet.java   2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/FProxyToadlet.java   2006-07-20 
20:21:57 UTC (rev 9675)
@@ -265,7 +265,7 @@
                                buf.append("<input type=\"hidden\" name=\"key\" 
value=\""+key.toString(false)+"\">");
                                buf.append("<input type=\"hidden\" 
name=\"return-type\" value=\"disk\">");
                                buf.append("<input type=\"hidden\" 
name=\"persistence\" value=\"forever\">");
-                               buf.append("<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">");
+                               buf.append("<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">");
                                if(mime != null)
                                        buf.append("<input type=\"hidden\" 
name=\"type\" value=\""+URLEncoder.encode(mime)+"\">");
                                buf.append("<input type=\"submit\" 
name=\"download\" value=\"Download in background and store in downloads 
directory\">");

Modified: trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java    2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java    2006-07-20 
20:21:57 UTC (rev 9675)
@@ -64,7 +64,7 @@
                  }

                  buf.append("<form action=\".\" method=\"post\" 
enctype=\"multipart/form-data\">\n");
-                 buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+node.formPassword+"\">");
+                 buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+Node.formPassword+"\">");
                  buf.append("<div class=\"infobox infobox-normal\">");
                  buf.append("<div class=\"infobox-header\">");
                  buf.append("Sending Node To Node Text Message to 
"+HTMLEncoder.encode(peernode_name)+"\n");
@@ -95,7 +95,7 @@
          StringBuffer buf = new StringBuffer(1024);

          String pass = request.getPartAsString("formPassword", 32);
-         if((pass == null) || !pass.equals(node.formPassword)) {
+         if((pass == null) || !pass.equals(Node.formPassword)) {
                  MultiValueTable headers = new MultiValueTable();
                  headers.put("Location", "/send_n2ntm/");
                  ctx.sendReplyHeaders(302, "Found", headers, null, 0);

Modified: trunk/freenet/src/freenet/clients/http/PluginToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PluginToadlet.java   2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/PluginToadlet.java   2006-07-20 
20:21:57 UTC (rev 9675)
@@ -121,7 +121,7 @@
                }

                String pass = httpRequest.getParam("formPassword");
-               if((pass == null) || !pass.equals(node.formPassword)) {
+               if((pass == null) || !pass.equals(Node.formPassword)) {
                        MultiValueTable headers = new MultiValueTable();
                        headers.put("Location", "/plugin/");
                        ctx.sendReplyHeaders(302, "Found", headers, null, 0);
@@ -219,10 +219,10 @@
                                outputBuffer.append("<td/>");
                        }
                        outputBuffer.append("<td><form action=\"./\" 
method=\"post\"><input type=\"hidden\" name=\"action\" value=\"reload\"/><input 
type=\"hidden\" name=\"pluginName\" value=\"").append(internalName).append("\" 
/><input type=\"submit\" value=\"Reload\" />" +
-                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">"+
+                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">"+
                                        "</form></td>");
                        outputBuffer.append("<td><form action=\"./\" 
method=\"post\"><input type=\"hidden\" name=\"action\" value=\"unload\"/><input 
type=\"hidden\" name=\"pluginName\" value=\"").append(internalName).append("\" 
/><input type=\"submit\" value=\"Unload\" />" +
-                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">"+
+                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">"+
                                        "</form></td>");
                        outputBuffer.append("</tr>\n");
                }
@@ -275,7 +275,7 @@
                outputBuffer.append("<div class=\"infobox-content\">");
                outputBuffer.append("<form action=\"./\" method=\"post\">");
                outputBuffer.append("<input type=\"hidden\" name=\"action\" 
value=\"add\" />");
-               outputBuffer.append("<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">");
+               outputBuffer.append("<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">");
                outputBuffer.append("<input type=\"text\" size=\"40\" 
name=\"pluginName\" value=\"\" />&nbsp;");
                outputBuffer.append("<input type=\"submit\" value=\"Load 
plugin\" />");
                outputBuffer.append("</form>");

Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java   2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java   2006-07-20 
20:21:57 UTC (rev 9675)
@@ -56,7 +56,7 @@
                MultiValueTable headers = new MultiValueTable();

                String pass = request.getParam("formPassword");
-               if((pass == null) || !pass.equals(node.formPassword)) {
+               if((pass == null) || !pass.equals(Node.formPassword)) {
                        MultiValueTable hdrs = new MultiValueTable();
                        headers.put("Location", "/queue/");
                        ctx.sendReplyHeaders(302, "Found", hdrs, null, 0);
@@ -98,7 +98,7 @@
                        buf.append("<div class=\"infobox-content\">\n");
                        buf.append("Are you sure you wish to unload " + 
HTMLEncoder.encode(request.getParam("unload")) + "?\n");
                        buf.append("<form action=\"/plugins/\" 
method=\"post\">\n");
-                       buf.append("<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">");
+                       buf.append("<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">");
                        buf.append("<input type=\"submit\" name=\"cancel\" 
value=\"Cancel\" />\n");
                        buf.append("<input type=\"hidden\" 
name=\"unloadconfirm\" value=\"" + 
HTMLEncoder.encode(request.getParam("unload")) + "\">\n");
                        buf.append("<input type=\"submit\" name=\"confirm\" 
value=\"Unload\" />\n");
@@ -219,16 +219,16 @@
                                        out.append("<td>");
                                        if (pi.isPproxyPlugin()) {
                                                out.append("<form 
method=\"get\" action=\"" + pi.getPluginClassName() + "\">" +
-                                                               "<input 
type=\"hidden\" name=\"formPassword\" value=\""+node.formPassword+"\">"+
+                                                               "<input 
type=\"hidden\" name=\"formPassword\" value=\""+Node.formPassword+"\">"+
                                                                "<input 
type=\"submit\" value=\"Visit\"></form>");
                                        }
                                        out.append("<form method=\"post\" 
action=\".\">" +
                                                        "<input type=\"hidden\" 
name=\"unload\" value=\"" + pi.getThreadName() + "\" />"+
-                                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">"+
+                                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">"+
                                                        "<input type=\"submit\" 
value=\"Unload\"></form>");
                                        out.append("<form method=\"post\" 
action=\".\">" +
                                                        "<input type=\"hidden\" 
name=\"reload\" value=\"" + pi.getThreadName() + "\" />"+
-                                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">"+
+                                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">"+
                                                        "<input type=\"submit\" 
value=\"Reload\"></form>");
                                        out.append("</td></tr>\n");
                                }
@@ -244,7 +244,7 @@
                        // Obsolete
                        //out.append("<form method=\"get\"><div>Remove plugin: 
(enter ID) <input type=\"text\" name=\"remove\" size=40/><input type=\"submit\" 
value=\"Remove\"/></div></form>\n");
                        out.append("<form method=\"post\" action=\".\">" +
-                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+node.formPassword+"\">"+
+                                       "<input type=\"hidden\" 
name=\"formPassword\" value=\""+Node.formPassword+"\">"+
                                        "<div>Load plugin: <input type=\"text\" 
name=\"load\" size=\"40\"/><input type=\"submit\" value=\"Load\" 
/></div></form>\n");
                        //
                        out.append("</div>\n");

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-07-20 
20:21:57 UTC (rev 9675)
@@ -45,7 +45,7 @@
                HTTPRequest request = new HTTPRequest(uri, data, ctx);

                String pass = request.getParam("formPassword");
-               if((pass == null) || !pass.equals(node.formPassword)) {
+               if((pass == null) || !pass.equals(Node.formPassword)) {
                        MultiValueTable headers = new MultiValueTable();
                        headers.put("Location", "/queue/");
                        ctx.sendReplyHeaders(302, "Found", headers, null, 0);
@@ -533,7 +533,7 @@
        private void writeDeleteCell(ClientRequest p, StringBuffer buf) {
                buf.append("<td>");
                buf.append("<form action=\"/queue/\" method=\"post\">");
-               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+node.formPassword+"\">");
+               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+Node.formPassword+"\">");
                buf.append("<input type=\"hidden\" name=\"identifier\" 
value=\"");
                buf.append(HTMLEncoder.encode(p.getIdentifier()));
                buf.append("\"><input type=\"submit\" name=\"remove_request\" 
value=\"Delete\">");
@@ -544,7 +544,7 @@
        private void writeDeleteAll(StringBuffer buf) {
                buf.append("<td>");
                buf.append("<form action=\"/queue/\" method=\"post\">");
-               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+node.formPassword+"\">");
+               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+Node.formPassword+"\">");
                buf.append("<input type=\"submit\" name=\"remove_AllRequests\" 
value=\"Delete Everything\">");
                buf.append("</form>\n");
                buf.append("</td>\n");

Modified: trunk/freenet/src/freenet/node/ARKFetcher.java
===================================================================
--- trunk/freenet/src/freenet/node/ARKFetcher.java      2006-07-20 18:32:48 UTC 
(rev 9674)
+++ trunk/freenet/src/freenet/node/ARKFetcher.java      2006-07-20 20:21:57 UTC 
(rev 9675)
@@ -24,13 +24,13 @@
        final Node node;
        private ClientGetter getter;
        private FreenetURI fetchingURI;
-       private boolean shouldRun = false;
+       private boolean shouldRun;
        private static final int MAX_BACKOFF = 60*60*1000;  // 1 hour
        private static final int MIN_BACKOFF = 5*1000;  // 5 seconds
        private int backoff = MIN_BACKOFF;
        private String identity;
-       private boolean isFetching = false;
-       private boolean started = false;
+       private boolean isFetching;
+       private boolean started;
        private long startedEdition;

        public ARKFetcher(PeerNode peer, Node node) {

Modified: trunk/freenet/src/freenet/node/DNSRequester.java
===================================================================
--- trunk/freenet/src/freenet/node/DNSRequester.java    2006-07-20 18:32:48 UTC 
(rev 9674)
+++ trunk/freenet/src/freenet/node/DNSRequester.java    2006-07-20 20:21:57 UTC 
(rev 9675)
@@ -11,7 +11,7 @@

     final Thread myThread;
     final Node node;
-    private long lastLogTime = 0;
+    private long lastLogTime;

     DNSRequester(Node node) {
         this.node = node;

Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2006-07-20 
18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2006-07-20 
20:21:57 UTC (rev 9675)
@@ -119,8 +119,8 @@
                PeerNode[] peers = node.getPeerNodes();
                PeerNode[] conns = node.getDarknetConnections();
                Peer[] nodeAddrs = node.getPrimaryIPAddress();
+               long now = System.currentTimeMillis();
                synchronized(this) {
-                       long now = System.currentTimeMillis();
                        if(runner != null) {
                                Logger.minor(this, "Already running IP 
detection plugins");
                                return;

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-07-20 18:32:48 UTC (rev 
9674)
+++ trunk/freenet/src/freenet/node/Node.java    2006-07-20 20:21:57 UTC (rev 
9675)
@@ -651,7 +651,11 @@
        public final UserAlertManager alerts;
        final TimeDecayingRunningAverage throttledPacketSendAverage;
        /** Must be included as a hidden field in order for any dangerous HTTP 
operation to complete successfully. */
-       public final String formPassword;
+       public static final String formPassword = String.valueOf(
+                       String.valueOf(
+                                       
System.getProperties().toString()+System.currentTimeMillis()
+                               ).hashCode()
+                       );
        final TimeDecayingRunningAverage remoteChkFetchBytesSentAverage;
        final TimeDecayingRunningAverage remoteSskFetchBytesSentAverage;
        final TimeDecayingRunningAverage remoteChkInsertBytesSentAverage;
@@ -1030,9 +1034,6 @@
                // Easy stuff
                Logger.normal(this, "Initializing Node using SVN 
r"+Version.cvsRevision+" and freenet-ext r"+NodeStarter.extRevisionNumber);
                System.out.println("Initializing Node using SVN 
r"+Version.cvsRevision+" and freenet-ext r"+NodeStarter.extRevisionNumber);
-               byte[] pwdBuf = new byte[16];
-               random.nextBytes(pwdBuf);
-               this.formPassword = Base64.encode(pwdBuf);
                nodeStarter=ns;
                if(logConfigHandler != lc)
                        logConfigHandler=lc;
@@ -1041,7 +1042,7 @@
                throttleWindow = new ThrottleWindowManager(2.0);
                alerts = new UserAlertManager();
                ipDetectorManager = new IPDetectorPluginManager(this);
-               nodeNameUserAlert = new MeaningfulNodeNameUserAlert();
+               nodeNameUserAlert = new MeaningfulNodeNameUserAlert(this);
                recentlyCompletedIDs = new LRUQueue();
                this.config = config;
                this.random = random;

Modified: trunk/freenet/src/freenet/node/NodeStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStarter.java     2006-07-20 18:32:48 UTC 
(rev 9674)
+++ trunk/freenet/src/freenet/node/NodeStarter.java     2006-07-20 20:21:57 UTC 
(rev 9675)
@@ -102,6 +102,8 @@
        }catch(Throwable t){     
                // Compatibility code ... will be removed
                Logger.error(this, "Unable to get the version of your 
freenet-ext file : it's probably corrupted!");
+               System.err.println("Unable to get the version of your 
freenet-ext file : it's probably corrupted!");
+               System.err.println(t.getMessage());
                extRevisionNumber = "INVALID";
                extBuildNumber = -1;
        }

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2006-07-20 18:32:48 UTC 
(rev 9674)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2006-07-20 20:21:57 UTC 
(rev 9675)
@@ -268,8 +268,11 @@
      */
     public double[] getPeerLocationDoubles() {
         double[] locs;
-        PeerNode[] conns = connectedPeers;
-        locs = new double[connectedPeers.length];
+        PeerNode[] conns;
+        synchronized (this) {
+                       conns = connectedPeers;
+               }
+        locs = new double[conns.length];
         int x = 0;
         for(int i=0;i<conns.length;i++) {
             if(conns[i].isRoutable())
@@ -325,7 +328,10 @@
      * Asynchronously send this message to every connected peer.
      */
     public void localBroadcast(Message msg) {
-        PeerNode[] peers = connectedPeers; // avoid synchronization
+        PeerNode[] peers;
+        synchronized (this) {
+                       peers = connectedPeers;
+               }
         for(int i=0;i<peers.length;i++) {
             if(peers[i].isRoutable()) try {
                 peers[i].sendAsync(msg, null, 0, null);
@@ -343,7 +349,10 @@
      * Find the peer which is closest to the target location
      */
     public PeerNode closestPeer(double loc) {
-        PeerNode[] peers = connectedPeers;
+        PeerNode[] peers;
+        synchronized (this) {
+               peers = connectedPeers;
+               }
         double bestDiff = 1.0;
         PeerNode best = null;
         for(int i=0;i<peers.length;i++) {
@@ -403,8 +412,10 @@
      * than we are, and is not included in the provided set.
      */
     private PeerNode _closerPeer(PeerNode pn, HashSet routedTo, HashSet 
notIgnored, double loc, boolean ignoreSelf, boolean ignoreBackedOff) {
-        PeerNode[] peers = connectedPeers;
-        // No locking necessary. We won't modify it, and if another method 
does, it will copy-and-assign.
+        PeerNode[] peers;  
+        synchronized (this) {
+                       peers = connectedPeers;
+               }
         Logger.minor(this, "Choosing closest peer: 
connectedPeers="+peers.length);
         double bestDiff = Double.MAX_VALUE;
         double maxDiff = 0.0;
@@ -450,10 +461,13 @@
      */
     public String getStatus() {
         StringBuffer sb = new StringBuffer();
-        PeerNode[] peers = myPeers;
+        PeerNode[] peers;
+        synchronized (this) {
+            peers = myPeers;                   
+               }
         String[] status = new String[peers.length];
-        for(int i=0;i<myPeers.length;i++) {
-            PeerNode pn = myPeers[i];
+        for(int i=0;i<peers.length;i++) {
+            PeerNode pn = peers[i];
             status[i] = pn.getStatus();
            Version.seenVersion(pn.getVersion());
         }
@@ -470,10 +484,13 @@
      */
     public String getTMCIPeerList() {
         StringBuffer sb = new StringBuffer();
-        PeerNode[] peers = myPeers;
+        PeerNode[] peers;
+        synchronized (this) {
+                       peers = myPeers;
+               }
         String[] peerList = new String[peers.length];
-        for(int i=0;i<myPeers.length;i++) {
-            PeerNode pn = myPeers[i];
+        for(int i=0;i<peers.length;i++) {
+            PeerNode pn = peers[i];
             peerList[i] = pn.getTMCIPeerInfo();
         }
         Arrays.sort(peerList);
@@ -486,10 +503,13 @@

     public String getFreevizOutput() {
         StringBuffer sb = new StringBuffer();
-        PeerNode[] peers = myPeers;
+        PeerNode[] peers;
+        synchronized (this) {
+                       peers = myPeers;
+               }
         String[] identity = new String[peers.length];
-        for(int i=0;i<myPeers.length;i++) {
-            PeerNode pn = myPeers[i];
+        for(int i=0;i<peers.length;i++) {
+            PeerNode pn = peers[i];
             identity[i] = pn.getFreevizOutput();
         }
         Arrays.sort(identity);
@@ -541,7 +561,10 @@
     }

        public boolean writePeers(OutputStreamWriter w) {
-        PeerNode[] peers = myPeers;
+        PeerNode[] peers;
+        synchronized (this) {
+                       peers = myPeers;
+               }
         for (int i = 0; i < peers.length; i++) {
             try {
                 peers[i].write(w);
@@ -578,7 +601,10 @@
        }

        public boolean anyConnectedPeers() {
-               PeerNode[] conns = connectedPeers;
+               PeerNode[] conns;
+               synchronized (this) {
+                       conns = connectedPeers;
+               }
                for(int i=0;i<conns.length;i++) {
                        if(conns[i].isRoutable()) return true;
                }

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java   2006-07-20 18:32:48 UTC 
(rev 9674)
+++ trunk/freenet/src/freenet/node/RequestSender.java   2006-07-20 20:21:57 UTC 
(rev 9675)
@@ -49,7 +49,7 @@
     private double nearestLoc;
     /** The source of this request if any - purely so we can avoid routing to 
it */
     final PeerNode source;
-    private PartiallyReceivedBlock prb = null;
+    private PartiallyReceivedBlock prb;
     private DSAPublicKey pubKey;
     private byte[] headers;
     private byte[] sskData;
@@ -452,8 +452,8 @@
         return prb != null;
     }

-    boolean hadROLastTimeWaited = false;
-    boolean prbWasNonNull = false;
+    boolean hadROLastTimeWaited;
+    boolean prbWasNonNull;

     /**
      * Wait until either the transfer has started or we have a 

Modified: trunk/freenet/src/freenet/node/SSKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertSender.java 2006-07-20 18:32:48 UTC 
(rev 9674)
+++ trunk/freenet/src/freenet/node/SSKInsertSender.java 2006-07-20 20:21:57 UTC 
(rev 9675)
@@ -422,7 +422,7 @@
         }
     }

-       private boolean hasForwardedRejectedOverload = false;
+       private boolean hasForwardedRejectedOverload;

     synchronized boolean receivedRejectedOverload() {
        return hasForwardedRejectedOverload;

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-20 18:32:48 UTC (rev 
9674)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-20 20:21:57 UTC (rev 
9675)
@@ -6,7 +6,7 @@
 /**
  * Central spot for stuff related to the versioning of the codebase.
  */
-public abstract class Version {
+public class Version {

        /** FReenet Reference Daemon */
        public static final String nodeName = "Fred";
@@ -267,7 +267,7 @@
         * @return the build number of an arbitrary version string
         */
        public static final int getArbitraryBuildNumber(
-               String version ) throws NumberFormatException {
+               String version ) {
            if(version == null) {
                Logger.error(Version.class, "version == null!",
                        new Exception("error"));

Modified: 
trunk/freenet/src/freenet/node/useralerts/MeaningfulNodeNameUserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/useralerts/MeaningfulNodeNameUserAlert.java  
2006-07-20 18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/node/useralerts/MeaningfulNodeNameUserAlert.java  
2006-07-20 20:21:57 UTC (rev 9675)
@@ -1,8 +1,18 @@
 package freenet.node.useralerts;

+import freenet.config.Option;
+import freenet.config.SubConfig;
+import freenet.node.Node;
+import freenet.support.HTMLEncoder;
+
 public class MeaningfulNodeNameUserAlert implements UserAlert {
        private boolean isValid=true;
+       private final Node node;

+       public MeaningfulNodeNameUserAlert(Node n) {
+               this.node = n;
+       }
+       
        public boolean userCanDismiss() {
                return true;
        }
@@ -12,12 +22,38 @@
        }

        public String getText() {
-               return "It seems that your node's name isn't defined. Setting " 
+
+               SubConfig sc = node.config.get("node");
+               Option o = sc.getOption("name");
+               StringBuffer buf = new StringBuffer();
+               
+               buf.append("It seems that your node's name isn't defined. 
Setting " +
                "up a node name doesn't affect your anonymity in any way but " +
                "is useful for your peers to know who you are in case they have 
" +
                "to reach you. You can change the node's name at the 
Configuration page. " +
                "Putting your e-mail address or IRC nickname there is generally 
speaking " +
-               "a good idea and helps your friends to identify your node.";
+               "a good idea and helps your friends to identify your node.");
+               buf.append("<form method=\"post\" action=\"/config/\">");
+               buf.append("<input type=\"hidden\" name=\"formPassword\" 
value=\""+Node.formPassword+"\">");
+               //buf.append("<ul class=\"config\"><span 
class=\"configprefix\">"+sc.getPrefix()+"</span>\n");
+               buf.append("<ul class=\"config\">\n");
+               buf.append("<li>");
+               buf.append("<span class=\"configshortdesc\">");
+               buf.append(o.getShortDesc());
+               buf.append("</span>");  
+               buf.append("<span class=\"config\">");
+               buf.append("<input alt=\""+o.getShortDesc()+"\" 
class=\"config\"" +
+                               " type=\"text\" 
name=\""+sc.getPrefix()+".name\" 
value=\""+HTMLEncoder.encode(o.getValueString())+"\" />");                      
       
+               buf.append("</span>");
+               buf.append("<span class=\"configlongdesc\">");
+               buf.append(o.getLongDesc());
+               buf.append("</span>");
+               buf.append("</li>\n");
+               buf.append("</ul>\n");
+               buf.append("<input type=\"submit\" value=\"Apply\" />");
+               buf.append("<input type=\"reset\" value=\"Reset\" />");
+               buf.append("</form>");
+               
+               return buf.toString();
        }

        public short getPriorityClass() {

Modified: 
trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java     
2006-07-20 18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java     
2006-07-20 20:21:57 UTC (rev 9675)
@@ -12,7 +12,6 @@
 import freenet.crypt.ciphers.Rijndael;
 import freenet.support.io.CannotCreateFromFieldSetException;
 import freenet.support.io.PersistentFileTracker;
-import freenet.support.io.PersistentTempBucketFactory;
 import freenet.support.io.SerializableToFieldSetBucket;
 import freenet.support.io.SerializableToFieldSetBucketUtil;


Modified: trunk/freenet/src/freenet/support/RandomAccessFileBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/RandomAccessFileBucket.java       
2006-07-20 18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/support/RandomAccessFileBucket.java       
2006-07-20 20:21:57 UTC (rev 9675)
@@ -10,7 +10,6 @@

 import freenet.support.io.CannotCreateFromFieldSetException;
 import freenet.support.io.PersistentFileTracker;
-import freenet.support.io.PersistentTempBucketFactory;
 import freenet.support.io.SerializableToFieldSetBucket;

 /**

Modified: 
trunk/freenet/src/freenet/support/io/CannotCreateFromFieldSetException.java
===================================================================
--- trunk/freenet/src/freenet/support/io/CannotCreateFromFieldSetException.java 
2006-07-20 18:32:48 UTC (rev 9674)
+++ trunk/freenet/src/freenet/support/io/CannotCreateFromFieldSetException.java 
2006-07-20 20:21:57 UTC (rev 9675)
@@ -1,7 +1,7 @@
 package freenet.support.io;

 public class CannotCreateFromFieldSetException extends Exception {
-
+       private static final long serialVersionUID = 1L;
        public CannotCreateFromFieldSetException(String msg) {
                super(msg);
        }


Reply via email to