diff --git a/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy b/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy index d2a2c369..2747f3cf 100644 --- a/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy +++ b/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy @@ -7,7 +7,7 @@ import com.muwire.core.Persona import net.i2p.util.ConcurrentHashSet class RemoteTrustList { - public enum Status { NEW, UPDATING, UPDATED } + public enum Status { NEW, UPDATING, UPDATED, UPDATE_FAILED } private final Persona persona private final Set good, bad diff --git a/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy b/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy index 385bd6e0..806cf8db 100644 --- a/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy +++ b/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy @@ -94,13 +94,15 @@ class TrustSubscriber { public void run() { trustList.status = RemoteTrustList.Status.UPDATING eventBus.publish(new TrustSubscriptionUpdatedEvent(trustList : trustList)) - check(trustList, System.currentTimeMillis()) - trustList.status = RemoteTrustList.Status.UPDATED + if (check(trustList, System.currentTimeMillis())) + trustList.status = RemoteTrustList.Status.UPDATED + else + trustList.status = RemoteTrustList.Status.UPDATE_FAILED eventBus.publish(new TrustSubscriptionUpdatedEvent(trustList : trustList)) } } - private void check(RemoteTrustList trustList, long now) { + private boolean check(RemoteTrustList trustList, long now) { log.info("fetching trust list from ${trustList.persona.getHumanReadableName()}") Endpoint endpoint = null try { @@ -118,7 +120,7 @@ class TrustSubscriber { if (code != 200) { log.info("couldn't fetch trust list, code $code") - return + return false } // swallow any headers @@ -147,8 +149,10 @@ class TrustSubscriber { trustList.bad.clear() trustList.bad.addAll(bad) + return true } catch (Exception e) { log.log(Level.WARNING,"exception fetching trust list from ${trustList.persona.getHumanReadableName()}",e) + return false } finally { endpoint?.close() } diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index cebfe70f..00a7c872 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -488,6 +488,11 @@ class MainFrameView { model.updateButtonEnabled = true model.unsubscribeButtonEnabled = true break + case RemoteTrustList.Status.UPDATE_FAILED: + model.reviewButtonEnabled = false + model.updateButtonEnabled = true + model.unsubscribeButtonEnabled = true + break } })