Author: nextgens
Date: 2008-08-24 21:24:48 +0000 (Sun, 24 Aug 2008)
New Revision: 22130
Modified:
trunk/freenet/src/freenet/client/async/USKFetcher.java
Log:
USKFetched: catch potential Exceptions thown on callbacks
Modified: trunk/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKFetcher.java 2008-08-24
12:29:53 UTC (rev 22129)
+++ trunk/freenet/src/freenet/client/async/USKFetcher.java 2008-08-24
21:24:48 UTC (rev 22130)
@@ -286,8 +286,13 @@
completed = true;
cb = callbacks.toArray(new
USKFetcherCallback[callbacks.size()]);
}
- for(int i=0;i<cb.length;i++)
- cb[i].onFoundEdition(ed, origUSK.copy(ed));
+ for(int i=0;i<cb.length;i++) {
+ try {
+ cb[i].onFoundEdition(ed,
origUSK.copy(ed));
+ } catch (Exception e) {
+ Logger.error(this, "An exception
occured while dealing with a callback:"+cb[i].toString()+"\n"+e.getMessage(),e);
+ }
+ }
}
}
@@ -520,18 +525,18 @@
// take locks...
short normalPrio = RequestStarter.MINIMUM_PRIORITY_CLASS;
short progressPrio = RequestStarter.MINIMUM_PRIORITY_CLASS;
- USKCallback[] callbacks;
+ USKCallback[] localCallbacks;
synchronized(this) {
- callbacks = subscribers.toArray(new
USKCallback[subscribers.size()]);
+ localCallbacks = subscribers.toArray(new
USKCallback[subscribers.size()]);
}
- if(callbacks.length == 0) {
+ if(localCallbacks.length == 0) {
normalPollPriority = DEFAULT_NORMAL_POLL_PRIORITY;
progressPollPriority = DEFAULT_PROGRESS_POLL_PRIORITY;
return;
}
- for(int i=0;i<callbacks.length;i++) {
- USKCallback cb = callbacks[i];
+ for(int i=0;i<localCallbacks.length;i++) {
+ USKCallback cb = localCallbacks[i];
short prio = cb.getPollingPriorityNormal();
if(prio < normalPrio) normalPrio = prio;
prio = cb.getPollingPriorityProgress();