Author: toad
Date: 2008-04-30 20:27:06 +0000 (Wed, 30 Apr 2008)
New Revision: 19635
Modified:
trunk/freenet/src/freenet/client/async/USKManager.java
Log:
Prevent race condition - check whether it's the same fetcher.
Modified: trunk/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKManager.java 2008-04-30
18:04:16 UTC (rev 19634)
+++ trunk/freenet/src/freenet/client/async/USKManager.java 2008-04-30
20:27:06 UTC (rev 19635)
@@ -301,7 +301,8 @@
public void onCancelled(USKFetcher fetcher) {
USK clear = fetcher.getOriginalUSK().clearCopy();
synchronized(this) {
- if(backgroundFetchersByClearUSK.remove(clear) != null) {
+ if(backgroundFetchersByClearUSK.get(clear) == fetcher) {
+ backgroundFetchersByClearUSK.remove(clear);
// This shouldn't happen, it's a sanity check:
the only way we get cancelled is from USKManager, which removes us before
calling cancel().
Logger.error(this, "onCancelled for "+fetcher+"
- was still registered, how did this happen??", new Exception("debug"));
}