From b607304f7be3c319b45bc76366f0b00e54be77b0 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 31 Dec 2022 07:35:25 -0500 Subject: [PATCH] i2psnark: Update tracker list after editing torrent (Gitlab #380) --- .../java/src/org/klomp/snark/Snark.java | 3 +++ .../java/src/org/klomp/snark/TrackerClient.java | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 299922fd48..ea5962f64d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -1335,6 +1335,9 @@ public class Snark */ public void replaceMetaInfo(MetaInfo metainfo) { meta = metainfo; + TrackerClient tc = trackerclient; + if (tc != null) + tc.reinitialize(); } ///////////// Begin StorageListener methods diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index ef36adbeda..da285d80ab 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -94,7 +94,8 @@ public class TrackerClient implements Runnable { private static final Hash DSA_ONLY_TRACKER = ConvertToHash.getHash("cfmqlafjfmgkzbt4r3jsfyhgsr5abgxryl6fnz3d3y5a365di5aa.b32.i2p"); private final I2PSnarkUtil _util; - private final MetaInfo meta; + // non-final for reinitialize() + private MetaInfo meta; private final String infoHash; private final String peerID; private final String additionalTrackerURL; @@ -266,8 +267,22 @@ public class TrackerClient implements Runnable { } } + /** + * Call after editing torrent + * @since 0.9.57 + */ + public synchronized void reinitialize() { + if (!_initialized || !stop) + return; + trackers.clear(); + backupTrackers.clear(); + meta = snark.getMetaInfo(); + setup(); + } + /** * Do this one time only (not every time it is started). + * Unless torrent was edited. * @since 0.9.1 */ private void setup() {