X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=20852d292e5de4da98dad3d2cb07098cd89f9ce2;hb=f69752ddd5a24ee1e56276ca45245954e36c8728;hp=765b672e05f3a6e95d135d7d67764abaf5c8f4c8;hpb=aa94dcb712392b69cb431d1637e4948688d15791;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 765b672..20852d2 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -49,6 +49,7 @@ import net.pterodactylus.sone.freenet.wot.OwnIdentity; import net.pterodactylus.sone.freenet.wot.Trust; import net.pterodactylus.sone.freenet.wot.WebOfTrustException; import net.pterodactylus.sone.main.SonePlugin; +import net.pterodactylus.util.collection.Pair; import net.pterodactylus.util.config.Configuration; import net.pterodactylus.util.config.ConfigurationException; import net.pterodactylus.util.logging.Logging; @@ -56,6 +57,7 @@ import net.pterodactylus.util.number.Numbers; import net.pterodactylus.util.validation.IntegerRangeValidator; import net.pterodactylus.util.validation.Validation; import net.pterodactylus.util.version.Version; +import freenet.client.FetchResult; import freenet.keys.FreenetURI; /** @@ -867,6 +869,14 @@ public class Core implements IdentityListener, UpdateListener { coreListenerManager.fireRescuingSone(sone); lockSone(sone); long edition = sone.getLatestEdition(); + /* find the latest edition the node knows about. */ + Pair currentUri = freenetInterface.fetchUri(sone.getRequestUri()); + if (currentUri != null) { + long currentEdition = currentUri.getLeft().getEdition(); + if (currentEdition > edition) { + edition = currentEdition; + } + } while (!stopped && (edition >= 0) && preferences.isSoneRescueMode()) { logger.log(Level.FINE, "Downloading edition " + edition + "…"); soneDownloader.fetchSone(sone, sone.getRequestUri().setKeyType("SSK").setDocName("Sone-" + edition)); @@ -933,6 +943,7 @@ public class Core implements IdentityListener, UpdateListener { for (Sone localSone : getLocalSones()) { if (localSone.getOptions().getBooleanOption("AutoFollow").get()) { localSone.addFriend(sone.getId()); + saveSone(localSone); } } } @@ -1692,6 +1703,9 @@ public class Core implements IdentityListener, UpdateListener { for (SoneInserter soneInserter : soneInserters.values()) { soneInserter.stop(); } + for (Sone localSone : localSones.values()) { + saveSone(localSone); + } } updateChecker.stop(); updateChecker.removeUpdateListener(this);