i2psnark: Fix DHT not restarting after router restart

cancel DHT cleaner and explorer on stop
This commit is contained in:
zzz
2022-05-28 13:00:32 -04:00
parent 7ea3c430aa
commit 80f76e38b4
4 changed files with 37 additions and 7 deletions

View File

@ -102,7 +102,7 @@ public class I2PSnarkUtil implements DisconnectListener {
*/
public I2PSnarkUtil(I2PAppContext ctx, String baseName, DisconnectListener discon) {
_context = ctx;
_log = _context.logManager().getLog(Snark.class);
_log = _context.logManager().getLog(I2PSnarkUtil.class);
_baseName = baseName;
_discon = discon;
_opts = new HashMap<String, String>();
@ -347,6 +347,10 @@ public class I2PSnarkUtil implements DisconnectListener {
synchronized(this) {
_manager = null;
_connecting = false;
if (_dht != null) {
_dht.stop();
_dht = null;
}
}
if (_discon != null)
_discon.sessionDisconnected();
@ -556,6 +560,9 @@ public class I2PSnarkUtil implements DisconnectListener {
return null;
}
/**
* Full Base64 of Destination
*/
public String getOurIPString() {
Destination dest = getMyDestination();
if (dest != null)

View File

@ -100,6 +100,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
private final ConcurrentHashMap<NID, Token> _incomingTokens;
/** recently unreachable, with lastSeen() as the added-to-blacklist time */
private final Set<NID> _blacklist;
private SimpleTimer2.TimedEvent _cleaner, _explorer;
/** hook to inject and receive datagrams */
private final I2PSession _session;
@ -623,6 +624,8 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
public synchronized void start() {
if (_isRunning)
return;
if (_log.shouldInfo())
_log.info("KRPC start", new Exception());
_session.addMuxedSessionListener(this, I2PSession.PROTO_DATAGRAM_RAW, _rPort);
_session.addMuxedSessionListener(this, I2PSession.PROTO_DATAGRAM, _qPort);
_knownNodes.start();
@ -630,9 +633,8 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
PersistDHT.loadDHT(this, _dhtFile, _backupDhtFile);
// start the explore thread
_isRunning = true;
// no need to keep ref, it will eventually stop
new Cleaner();
new Explorer(5*1000);
_cleaner = new Cleaner();
_explorer = new Explorer(5*1000);
_txPkts.set(0);
_rxPkts.set(0);
_txBytes.set(0);
@ -648,7 +650,10 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
if (!_isRunning)
return;
_isRunning = false;
// FIXME stop the explore thread
if (_log.shouldInfo())
_log.info("KRPC stop", new Exception());
_cleaner.cancel();
_explorer.cancel();
// unregister port listeners
_session.removeListener(I2PSession.PROTO_DATAGRAM, _qPort);
_session.removeListener(I2PSession.PROTO_DATAGRAM_RAW, _rPort);
@ -1640,6 +1645,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
public void disconnected(I2PSession session) {
if (_log.shouldLog(Log.WARN))
_log.warn("KRPC disconnected");
stop();
}
public void errorOccurred(I2PSession session, String message, Throwable error) {
@ -1760,7 +1766,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
}
if (_log.shouldLog(Log.INFO))
_log.info("Explore of " + keys.size() + " buckets done, new size: " + _knownNodes.size());
new Explorer(EXPLORE_TIME);
_explorer = new Explorer(EXPLORE_TIME);
}
}
}

View File

@ -1,3 +1,20 @@
2022-05-28 zzz
* Console: Require full restart on transport enable/disable
* I2CP: Only send one notification to each session listener
* i2psnark: Fix DHT not restarting after router restart
* Router: Don't fail to start up on unchecked family key errors
2022-05-27 zzz
* Streaming: Improve error message on unsupported sig type
* UPnP: Don't bind HTTP listen sockets to all addresses at startup
2022-05-26 zzz
* Addressbook: Add CLI handler
2022-05-25 zzz
* Crypto: Throw checked exception from ElGamal
so console key import reports the correct error
2022-05-23 1.8.0 released
2022-05-19 zzz

View File

@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Git";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 0;
public final static long BUILD = 1;
/** for example "-test" */
public final static String EXTRA = "";