forked from I2P_Developers/i2p.i2p
Cancel timers if tunnel is stopped
This commit is contained in:
@ -228,7 +228,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
|
|||||||
File filterDefinition = new File(getTunnel().filterDefinition);
|
File filterDefinition = new File(getTunnel().filterDefinition);
|
||||||
I2PAppContext context = getTunnel().getContext();
|
I2PAppContext context = getTunnel().getContext();
|
||||||
try {
|
try {
|
||||||
filter = FilterFactory.createFilter(context, filterDefinition);
|
filter = FilterFactory.createFilter(context, filterDefinition, this);
|
||||||
} catch (IOException | InvalidDefinitionException bad) {
|
} catch (IOException | InvalidDefinitionException bad) {
|
||||||
throw new IllegalArgumentException("Can't create socket manager", bad);
|
throw new IllegalArgumentException("Can't create socket manager", bad);
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import net.i2p.I2PAppContext;
|
|||||||
import net.i2p.util.SimpleTimer2;
|
import net.i2p.util.SimpleTimer2;
|
||||||
import net.i2p.util.Log;
|
import net.i2p.util.Log;
|
||||||
import net.i2p.data.Destination;
|
import net.i2p.data.Destination;
|
||||||
|
import net.i2p.i2ptunnel.I2PTunnelTask;
|
||||||
import net.i2p.client.streaming.IncomingConnectionFilter;
|
import net.i2p.client.streaming.IncomingConnectionFilter;
|
||||||
|
|
||||||
class AccessFilter implements IncomingConnectionFilter {
|
class AccessFilter implements IncomingConnectionFilter {
|
||||||
@ -26,6 +27,7 @@ class AccessFilter implements IncomingConnectionFilter {
|
|||||||
|
|
||||||
private final FilterDefinition definition;
|
private final FilterDefinition definition;
|
||||||
private final I2PAppContext context;
|
private final I2PAppContext context;
|
||||||
|
private final I2PTunnelTask task;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trackers for known destinations defined in access lists
|
* Trackers for known destinations defined in access lists
|
||||||
@ -36,9 +38,11 @@ class AccessFilter implements IncomingConnectionFilter {
|
|||||||
*/
|
*/
|
||||||
private final Map<String, DestTracker> unknownDests = new HashMap<String, DestTracker>();
|
private final Map<String, DestTracker> unknownDests = new HashMap<String, DestTracker>();
|
||||||
|
|
||||||
AccessFilter(I2PAppContext context, FilterDefinition definition) throws IOException {
|
AccessFilter(I2PAppContext context, FilterDefinition definition, I2PTunnelTask task)
|
||||||
|
throws IOException {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.definition = definition;
|
this.definition = definition;
|
||||||
|
this.task = task;
|
||||||
|
|
||||||
reload();
|
reload();
|
||||||
|
|
||||||
@ -139,6 +143,8 @@ class AccessFilter implements IncomingConnectionFilter {
|
|||||||
super(context.simpleTimer2(), PURGE_INTERVAL);
|
super(context.simpleTimer2(), PURGE_INTERVAL);
|
||||||
}
|
}
|
||||||
public void timeReached() {
|
public void timeReached() {
|
||||||
|
if (!task.isOpen())
|
||||||
|
return;
|
||||||
purge();
|
purge();
|
||||||
schedule(PURGE_INTERVAL);
|
schedule(PURGE_INTERVAL);
|
||||||
}
|
}
|
||||||
@ -149,6 +155,8 @@ class AccessFilter implements IncomingConnectionFilter {
|
|||||||
super(context.simpleTimer2(), SYNC_INTERVAL);
|
super(context.simpleTimer2(), SYNC_INTERVAL);
|
||||||
}
|
}
|
||||||
public void timeReached() {
|
public void timeReached() {
|
||||||
|
if (!task.isOpen())
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
record();
|
record();
|
||||||
reload();
|
reload();
|
||||||
|
@ -9,10 +9,13 @@ import java.util.List;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import net.i2p.I2PAppContext;
|
import net.i2p.I2PAppContext;
|
||||||
|
import net.i2p.i2ptunnel.I2PTunnelTask;
|
||||||
import net.i2p.client.streaming.IncomingConnectionFilter;
|
import net.i2p.client.streaming.IncomingConnectionFilter;
|
||||||
|
|
||||||
public class FilterFactory {
|
public class FilterFactory {
|
||||||
public static IncomingConnectionFilter createFilter(I2PAppContext context, File definition)
|
public static IncomingConnectionFilter createFilter(I2PAppContext context,
|
||||||
|
File definition,
|
||||||
|
I2PTunnelTask task)
|
||||||
throws IOException, InvalidDefinitionException {
|
throws IOException, InvalidDefinitionException {
|
||||||
List<String> linesList = new ArrayList<String>();
|
List<String> linesList = new ArrayList<String>();
|
||||||
|
|
||||||
@ -33,6 +36,6 @@ public class FilterFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FilterDefinition parsedDefinition = DefinitionParser.parse(linesList.toArray(new String[0]));
|
FilterDefinition parsedDefinition = DefinitionParser.parse(linesList.toArray(new String[0]));
|
||||||
return new AccessFilter(context, parsedDefinition);
|
return new AccessFilter(context, parsedDefinition, task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user