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.