diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000000..26d33521af1
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000000..61a9130cd96
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 00000000000..ce1c62c7c60
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 00000000000..c981469c8ea
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000000..852c82a235e
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000000..35eb1ddfbbc
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/freenet/node/Announcer.java b/src/freenet/node/Announcer.java
index c3532390abf..d700f44a572 100644
--- a/src/freenet/node/Announcer.java
+++ b/src/freenet/node/Announcer.java
@@ -359,6 +359,15 @@ boolean enoughPeers() {
}
return true;
}
+ if (shutdownAnnouncement()) return true;
+
+ synchronized(timeGotEnoughPeersLock) {
+ timeGotEnoughPeers = -1;
+ }
+ return false;
+ }
+
+ private boolean shutdownAnnouncement() {
boolean killAnnouncement = false;
if((!node.getNodeUpdater().isEnabled()) ||
(node.getNodeUpdater().canUpdateNow() && !node.getNodeUpdater().isArmed())) {
@@ -382,7 +391,7 @@ boolean enoughPeers() {
}
}
-
+
if(killAnnouncement) {
node.getExecutor().execute(new Runnable() {
@@ -395,7 +404,7 @@ public void run() {
node.getPeers().disconnectAndRemove(pn, true, true, true);
}
}
-
+
});
return true;
} else {
@@ -411,10 +420,6 @@ public void run() {
return true;
}
}
-
- synchronized(timeGotEnoughPeersLock) {
- timeGotEnoughPeers = -1;
- }
return false;
}
diff --git a/src/freenet/node/DarknetPeerNode.java b/src/freenet/node/DarknetPeerNode.java
index 135ff19e92e..3a32b8c9f1d 100644
--- a/src/freenet/node/DarknetPeerNode.java
+++ b/src/freenet/node/DarknetPeerNode.java
@@ -510,12 +510,34 @@ public boolean readExtraPeerDataFile(File extraPeerDataFile, int fileNumber) {
return false;
}
Logger.normal(this, "extraPeerDataFile: "+extraPeerDataFile.getPath());
+ FileInputStream fis;
+ SimpleFieldSet fs = readFile(extraPeerDataFile);
+ if (fs == null) return false;
+ if(fs == null) {
+ Logger.normal(this, "Deleting corrupt (too short?) file: "+extraPeerDataFile);
+ deleteExtraPeerDataFile(fileNumber);
+ return true;
+ }
+ boolean parseResult = false;
+ try {
+ parseResult = parseExtraPeerData(fs, extraPeerDataFile, fileNumber);
+ if(!parseResult) {
+ gotError = true;
+ }
+ } catch (FSParseException e2) {
+ Logger.error(this, "Could not parse extra peer data: "+e2+ '\n' +fs.toString(),e2);
+ gotError = true;
+ }
+ return !gotError;
+ }
+
+ private SimpleFieldSet readFile(File extraPeerDataFile) {
FileInputStream fis;
try {
fis = new FileInputStream(extraPeerDataFile);
} catch (FileNotFoundException e1) {
- Logger.normal(this, "Extra peer data file not found: "+extraPeerDataFile.getPath());
- return false;
+ Logger.normal(this, "Extra peer data file not found: "+ extraPeerDataFile.getPath());
+ return null;
}
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr);
@@ -531,25 +553,10 @@ public boolean readExtraPeerDataFile(File extraPeerDataFile, int fileNumber) {
try {
br.close();
} catch (IOException e5) {
- Logger.error(this, "Ignoring "+e5+" caught reading "+extraPeerDataFile.getPath(), e5);
+ Logger.error(this, "Ignoring "+e5+" caught reading "+ extraPeerDataFile.getPath(), e5);
}
}
- if(fs == null) {
- Logger.normal(this, "Deleting corrupt (too short?) file: "+extraPeerDataFile);
- deleteExtraPeerDataFile(fileNumber);
- return true;
- }
- boolean parseResult = false;
- try {
- parseResult = parseExtraPeerData(fs, extraPeerDataFile, fileNumber);
- if(!parseResult) {
- gotError = true;
- }
- } catch (FSParseException e2) {
- Logger.error(this, "Could not parse extra peer data: "+e2+ '\n' +fs.toString(),e2);
- gotError = true;
- }
- return !gotError;
+ return fs;
}
private boolean parseExtraPeerData(SimpleFieldSet fs, File extraPeerDataFile, int fileNumber) throws FSParseException {