Author: zothar
Date: 2006-11-19 19:44:39 +0000 (Sun, 19 Nov 2006)
New Revision: 11014
Modified:
trunk/freenet/src/freenet/node/PeerManager.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Bug 891: Remove a peer's extra-peer-data directory when removing the peer from
the node.
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2006-11-19 18:19:19 UTC
(rev 11013)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2006-11-19 19:44:39 UTC
(rev 11014)
@@ -161,6 +161,7 @@
if(peerNodePreviousRoutingBackoffReason != null) {
node.removePeerNodeRoutingBackoffReason(peerNodePreviousRoutingBackoffReason,
pn);
}
+ pn.removeExtraPeerDataDir();
if(!isInPeers) return false;
// removing from connectedPeers
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2006-11-19 18:19:19 UTC
(rev 11013)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2006-11-19 19:44:39 UTC
(rev 11014)
@@ -2798,6 +2798,27 @@
extraPeerDataFile.delete();
}
+ public void removeExtraPeerDataDir() {
+ String extraPeerDataDirPath = node.getExtraPeerDataDir();
+ File extraPeerDataPeerDir = new
File(extraPeerDataDirPath+File.separator+getIdentityString());
+ if(!extraPeerDataPeerDir.exists()) {
+ Logger.error(this, "Extra peer data directory for peer
does not exist: "+extraPeerDataPeerDir.getPath());
+ return;
+ }
+ if(!extraPeerDataPeerDir.isDirectory()) {
+ Logger.error(this, "Extra peer data directory for peer
not a directory: "+extraPeerDataPeerDir.getPath());
+ return;
+ }
+ Integer[] localFileNumbers = null;
+ synchronized(extraPeerDataFileNumbers) {
+ localFileNumbers = (Integer[])
extraPeerDataFileNumbers.toArray(new Integer[extraPeerDataFileNumbers.size()]);
+ }
+ for (int i = 0; i < localFileNumbers.length; i++) {
+ deleteExtraPeerDataFile(localFileNumbers[i].intValue());
+ }
+ extraPeerDataPeerDir.delete();
+ }
+
public boolean rewriteExtraPeerDataFile(SimpleFieldSet fs, int
extraPeerDataType, int fileNumber) {
String extraPeerDataDirPath = node.getExtraPeerDataDir();
if(extraPeerDataType > 0)