Author: toad
Date: 2008-01-23 15:32:13 +0000 (Wed, 23 Jan 2008)
New Revision: 17207

Modified:
   trunk/freenet/src/freenet/client/async/USKFetcher.java
Log:
Avoid nested locks

Modified: trunk/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKFetcher.java      2008-01-23 
13:03:33 UTC (rev 17206)
+++ trunk/freenet/src/freenet/client/async/USKFetcher.java      2008-01-23 
15:32:13 UTC (rev 17207)
@@ -290,11 +290,10 @@
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                LinkedList l = null;
                final long lastEd = uskManager.lookup(origUSK);
+               long curLatest;
                synchronized(this) {
                        runningAttempts.remove(att);
-                       long curLatest = att.number;
-                       if(!dontUpdate)
-                               uskManager.update(origUSK, curLatest);
+                       curLatest = att.number;
                        if(completed || cancelled) return;
                        if(curLatest >= lastEd && !(dontUpdate && block == 
null)) {
                                try {
@@ -325,6 +324,8 @@
                        }
                        cancelBefore(curLatest);
                }
+               if(!dontUpdate)
+                       uskManager.update(origUSK, curLatest);
                if(l == null) return;
                final LinkedList toSched = l;
                // If we schedule them here, we don't get icky recursion 
problems.


Reply via email to