Skip to content

Commit ace52e1

Browse files
committed
Fixed cannot reload RuleResolver when no rule is activated
1 parent 57191b8 commit ace52e1

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

app/src/main/java/org/itxtech/daedalus/Daedalus.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public static <T> T parseJson(Class<T> beanClass, JsonReader reader) throws Json
140140
return gson.fromJson(reader, beanClass);
141141
}
142142

143-
public static void initHostsResolver() {
143+
public static void initRuleResolver() {
144144
if (Daedalus.getPrefs().getBoolean("settings_local_rules_resolution", false)) {
145145
ArrayList<String> pendingLoad = new ArrayList<>();
146146
ArrayList<Rule> usingRules = configurations.getUsingRules();
@@ -161,6 +161,8 @@ public static void initHostsResolver() {
161161
RuleResolver.startLoadDnsmasq(arr);
162162
break;
163163
}
164+
} else {
165+
RuleResolver.clear();
164166
}
165167
} else {
166168
RuleResolver.clear();
@@ -171,7 +173,7 @@ public static void initHostsResolver() {
171173
public static void setRulesChanged() {
172174
if (DaedalusVpnService.isActivated() &&
173175
getPrefs().getBoolean("settings_allow_dynamic_rule_reload", false)) {
174-
initHostsResolver();
176+
initRuleResolver();
175177
}
176178
}
177179

app/src/main/java/org/itxtech/daedalus/service/DaedalusVpnService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public int onStartCommand(Intent intent, int flags, int startId) {
111111
this.notification = builder;
112112
}
113113

114-
Daedalus.initHostsResolver();
114+
Daedalus.initRuleResolver();
115115
DNSServerHelper.buildPortCache();
116116

117117
if (this.mThread == null) {

app/src/main/java/org/itxtech/daedalus/util/RuleResolver.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public class RuleResolver implements Runnable {
3333
private static int mode = MODE_HOSTS;
3434
private static String[] hostsFiles;
3535
private static String[] dnsmasqFiles;
36-
private static HashMap<String, String> rulesA;
37-
private static HashMap<String, String> rulesAAAA;
36+
private static HashMap<String, String> rulesA = new HashMap<>();
37+
private static HashMap<String, String> rulesAAAA = new HashMap<>();
3838
private static boolean shutdown = false;
3939

4040
public RuleResolver() {
@@ -61,18 +61,20 @@ public static void startLoadDnsmasq(String[] loadPath) {
6161
}
6262

6363
public static void clear() {
64-
rulesA = null;
65-
rulesAAAA = null;
64+
rulesA = new HashMap<>();
65+
rulesAAAA = new HashMap<>();
6666
}
6767

6868
public static String resolve(String hostname, Record.TYPE type) {
69-
HashMap<String, String> rules = null;
69+
HashMap<String, String> rules;
7070
if (type == Record.TYPE.A) {
7171
rules = rulesA;
7272
} else if (type == Record.TYPE.AAAA) {
7373
rules = rulesAAAA;
74+
} else {
75+
return null;
7476
}
75-
if (rules == null) {
77+
if (rules.size() == 0) {
7678
return null;
7779
}
7880
if (rules.containsKey(hostname)) {

0 commit comments

Comments
 (0)