Author: toad
Date: 2006-06-01 16:49:26 +0000 (Thu, 01 Jun 2006)
New Revision: 8967

Modified:
   trunk/freenet/
   trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
   trunk/freenet/src/freenet/node/Version.java
Log:
766: Avoid some nasty nested locking (related to deadlock in Spider). Also 
deploy other recent changes.


Property changes on: trunk/freenet
___________________________________________________________________
Name: svn:ignore
   - freenet-*
build
bin
   + 
freenet-*
build
bin
lib


Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java        
2006-06-01 14:08:58 UTC (rev 8966)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java        
2006-06-01 16:49:26 UTC (rev 8967)
@@ -172,6 +172,7 @@

        public void segmentFinished(SplitFileFetcherSegment segment) {
                Logger.minor(this, "Finished segment: "+segment);
+               boolean alreadyFinished = false;
                synchronized(this) {
                        boolean allDone = true;
                        for(int i=0;i<segments.length;i++)
@@ -180,15 +181,17 @@
                                        allDone = false;
                                }
                        if(allDone) {
-                               if(allSegmentsFinished)
+                               if(allSegmentsFinished) {
                                        Logger.error(this, "Was already 
finished! (segmentFinished("+segment+")");
-                               else {
+                                       alreadyFinished = true;
+                               } else {
                                        allSegmentsFinished = true;
-                                       finish();
                                }
                        }
                        notifyAll();
                }
+               if(!alreadyFinished)
+                       finish();
        }

        private void finish() {

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-06-01 14:08:58 UTC (rev 
8966)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-01 16:49:26 UTC (rev 
8967)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 765;
+       private static final int buildNumber = 766;

        /** Oldest build of Fred we will talk to */
        private static final int lastGoodBuild = 765;


Reply via email to