* Matthew Toseland <toad at amphibian.dyndns.org> [2006-07-05 16:25:39]:

> 1. Is it necessary to close the underlying stream? I was under the
> impression that wrapper streams close method will close that which they
> wrap, and closing the underlying stream as well will result in an
> IOException to the effect that it is already closed.

I'm not sure about that ... we open the stream, IMHO we should close it.
I haven't RTFM the wrapper's doc though :$
revert it if you think it's needed

> 2. You can't synchronize on an object you suspect may be null.

I've figured it later ... the solution is to synchronize after the test.

NextGen$
> 
> On Wed, Jul 05, 2006 at 10:10:42AM +0000, nextgens at freenetproject.org 
> wrote:
> > Author: nextgens
> > Date: 2006-07-05 10:10:36 +0000 (Wed, 05 Jul 2006)
> > New Revision: 9468
> > 
> > Modified:
> >    trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
> >    trunk/freenet/src/freenet/node/CPUUsageMonitor.java
> >    trunk/freenet/src/freenet/node/Node.java
> >    trunk/freenet/src/freenet/node/PeerNode.java
> >    trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
> > Log:
> > Various bug fixes:
> >     * Fix some problems in StringCallbacks
> >     * Fix a potential synchronization problems
> >     * Limit the visibility of some classes
> >     * add a FIXME : it needs to be reviewed !
> > 
> > Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java 
> > 2006-07-05 08:28:11 UTC (rev 9467)
> > +++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java 
> > 2006-07-05 10:10:36 UTC (rev 9468)
> > @@ -35,7 +35,7 @@
> >  
> >  public class SimpleToadletServer implements ToadletContainer, Runnable {
> >     
> > -   public class ToadletElement {
> > +   private static class ToadletElement {
> >             public ToadletElement(Toadlet t2, String urlPrefix) {
> >                     t = t2;
> >                     prefix = urlPrefix;
> > @@ -76,7 +76,7 @@
> >             }
> >             
> >             public void set(String bindTo) throws 
> > InvalidConfigValueException {
> > -                   if(bindTo != get())
> > +                   if(!bindTo.equals(get()))
> >                             throw new InvalidConfigValueException("Cannot 
> > change FProxy bind address on the fly");
> >             }
> >     }
> > @@ -133,7 +133,7 @@
> >             }
> >     }
> >     
> > -   class FProxyAdvancedDarknetEnabledCallback implements BooleanCallback {
> > +   private static class FProxyAdvancedDarknetEnabledCallback implements 
> > BooleanCallback {
> >             
> >             private final SimpleToadletServer ts;
> >             
> > 
> > Modified: trunk/freenet/src/freenet/node/CPUUsageMonitor.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/CPUUsageMonitor.java     2006-07-05 
> > 08:28:11 UTC (rev 9467)
> > +++ trunk/freenet/src/freenet/node/CPUUsageMonitor.java     2006-07-05 
> > 10:10:36 UTC (rev 9468)
> > @@ -39,6 +39,7 @@
> >                  firstline = br.readLine();
> >                  if(firstline == null) throw new EOFException();
> >                  ris.close();
> > +                br.close();
> >              } catch (IOException e) {
> >                  if(!reportedFailedProcOpen)
> >                      Logger.error(this, "Failed to open /proc/stat: "+e, e);
> > 
> > Modified: trunk/freenet/src/freenet/node/Node.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/Node.java        2006-07-05 08:28:11 UTC 
> > (rev 9467)
> > +++ trunk/freenet/src/freenet/node/Node.java        2006-07-05 10:10:36 UTC 
> > (rev 9468)
> > @@ -653,7 +653,7 @@
> >     private static NodeStarter nodeStarter;
> >     
> >     // The watchdog will be silenced until it's true
> > -   private static boolean hasStarted = false;
> > +   private boolean hasStarted = false;
> >     
> >     // Debugging stuff
> >     private static final boolean USE_RAM_PUBKEYS_CACHE = true;
> > 
> > Modified: trunk/freenet/src/freenet/node/PeerNode.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/PeerNode.java    2006-07-05 08:28:11 UTC 
> > (rev 9467)
> > +++ trunk/freenet/src/freenet/node/PeerNode.java    2006-07-05 10:10:36 UTC 
> > (rev 9468)
> > @@ -286,6 +286,17 @@
> >          // FIXME make mandatory once everyone has upgraded
> >          lastGoodVersion = fs.get("lastGoodVersion");
> >          
> > +        String name = fs.get("myName");
> > +        if(name == null) throw new FSParseException("No name");
> > +        myName = name;
> > +        String testnet = fs.get("testnet");
> > +        testnetEnabled = testnet == null ? false : 
> > (testnet.equalsIgnoreCase("true") || testnet.equalsIgnoreCase("yes"));
> > +        if(testnetEnabled != node.testnetEnabled) {
> > +           String err = "Ignoring incompatible node "+detectedPeer+" - 
> > peer.testnet="+testnetEnabled+"("+testnet+") but 
> > node.testnet="+node.testnetEnabled;
> > +           Logger.error(this, err);
> > +           throw new PeerParseException(err);
> > +        }
> > +        
> >          nominalPeer=new Vector();
> >          nominalPeer.removeAllElements();
> >          try{
> > @@ -312,17 +323,6 @@
> >             detectedPeer = (Peer) nominalPeer.firstElement();
> >          }
> >          
> > -        String name = fs.get("myName");
> > -        if(name == null) throw new FSParseException("No name");
> > -        myName = name;
> > -        String testnet = fs.get("testnet");
> > -        testnetEnabled = testnet == null ? false : 
> > (testnet.equalsIgnoreCase("true") || testnet.equalsIgnoreCase("yes"));
> > -        if(testnetEnabled != node.testnetEnabled) {
> > -           String err = "Ignoring incompatible node "+detectedPeer+" - 
> > peer.testnet="+testnetEnabled+"("+testnet+") but 
> > node.testnet="+node.testnetEnabled;
> > -           Logger.error(this, err);
> > -           throw new PeerParseException(err);
> > -        }
> > -        
> >          // Setup incoming and outgoing setup ciphers
> >          byte[] nodeKey = node.identityHash;
> >          byte[] nodeKeyHash = node.identityHashHash;
> > @@ -481,6 +481,7 @@
> >          return false;
> >     }
> >  
> > +    //FIXME: Huh wtf ?
> >     private void randomizeMaxTimeBetweenPacketSends() {
> >          int x = Node.KEEPALIVE_INTERVAL;
> >          x += node.random.nextInt(x);
> > @@ -500,7 +501,7 @@
> >      /**
> >       * Returns an array with the advertised addresses and the detected one
> >       */
> > -    public Peer[] getHandshakeIPs(){
> > +    protected Peer[] getHandshakeIPs(){
> >          return handshakeIPs;
> >      }
> >      
> > @@ -941,10 +942,12 @@
> >       * Send a message, right now, on this thread, to this node.
> >       */
> >      public void send(Message req) throws NotConnectedException {
> > -        if(!isConnected) {
> > -            Logger.error(this, "Tried to send "+req+" but not connected to 
> > "+this, new Exception("debug"));
> > -            return;
> > -        }
> > +           synchronized (this) {
> > +            if(!isConnected()) {
> > +                Logger.error(this, "Tried to send "+req+" but not 
> > connected to "+this, new Exception("debug"));
> > +                return;
> > +            }
> > +           }
> >          node.usm.send(this, req);
> >      }
> >  
> > @@ -1537,11 +1540,13 @@
> >          fs.put("testnet", Boolean.toString(testnetEnabled));
> >          fs.put("version", version);
> >          fs.put("myName", myName);
> > -        if(myARK != null) {
> > -           // Decrement it because we keep the number we would like to 
> > fetch, not the last one fetched.
> > -           fs.put("ark.number", Long.toString(myARK.suggestedEdition-1));
> > -           fs.put("ark.pubURI", myARK.getBaseSSK().toString(false));
> > -        }
> > +        synchronized (myARK) {
> > +            if(myARK != null) {
> > +                   // Decrement it because we keep the number we would 
> > like to fetch, not the last one fetched.
> > +                   fs.put("ark.number", 
> > Long.toString(myARK.suggestedEdition-1));
> > +                   fs.put("ark.pubURI", 
> > myARK.getBaseSSK().toString(false));
> > +            }
> > +           }
> >          return fs;
> >      }
> >  
> > @@ -1850,11 +1855,13 @@
> >             localNodeReceivedMessageTypes.put(messageSpecName,count);
> >     }
> >     
> > +   //FIXME: maybe return a copy insteed
> >     public Hashtable getLocalNodeSentMessagesToStatistic ()
> >     {
> >             return localNodeSentMessageTypes;
> >     }
> > -
> > +   
> > +   //FIXME: maybe return a copy insteed
> >     public Hashtable getLocalNodeReceivedMessagesFromStatistic ()
> >     {
> >             return localNodeReceivedMessageTypes;
> > 
> > Modified: trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java       
> > 2006-07-05 08:28:11 UTC (rev 9467)
> > +++ trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java       
> > 2006-07-05 10:10:36 UTC (rev 9468)
> > @@ -149,7 +149,7 @@
> >             }
> >             
> >             public void set(String val) throws InvalidConfigValueException {
> > -                   if(val == get()) return;
> > +                   if(val.equals(get())) return;
> >                     throw new InvalidConfigValueException("Cannot be 
> > updated on the fly");
> >             }
> >      }
> > 
> > _______________________________________________
> > cvs mailing list
> > cvs at freenetproject.org
> > http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> > 
> 
> -- 
> Matthew J Toseland - toad at amphibian.dyndns.org
> Freenet Project Official Codemonkey - http://freenetproject.org/
> ICTHUS - Nothing is impossible. Our Boss says so.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/cvs/attachments/20060705/d40d4342/attachment.pgp>

Reply via email to