Author: toad
Date: 2007-09-21 10:01:42 +0000 (Fri, 21 Sep 2007)
New Revision: 15223
Modified:
trunk/freenet/src/freenet/node/RequestHandler.java
Log:
Send opennet noderef when we send a block from cache and the requestor is not
opennet but we pass opennet refs through darknet.
=> Hopefully much more path folding passes through the co-operative parts of
the darknet.
Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java 2007-09-21 02:00:50 UTC
(rev 15222)
+++ trunk/freenet/src/freenet/node/RequestHandler.java 2007-09-21 10:01:42 UTC
(rev 15223)
@@ -148,9 +148,7 @@
node.addTransferringRequestHandler(uid);
if(bt.send(node.executor)) {
status = RequestSender.SUCCESS; // for byte logging
- if(source.isOpennet()) {
- finishOpennetNoRelay();
- }
+ finishOpennetNoRelayChecked();
}
}
return;
@@ -189,7 +187,7 @@
finalTransferFailed = true;
} else {
// Successful CHK transfer, maybe path fold
- finishOpennet();
+ finishOpennetChecked();
}
status = rs.getStatus();
return;
@@ -263,23 +261,32 @@
}
}
- private void finishOpennet() {
+ private void finishOpennetChecked() {
if(!(node.passOpennetRefsThroughDarknet() ||
source.isOpennet())) return;
+ finishOpennetInner();
+ }
+
+ private void finishOpennetInner() {
byte[] noderef = rs.waitForOpennetNoderef();
if(noderef == null) {
- finishOpennetNoRelay();
+ finishOpennetNoRelayInner();
return;
}
if(node.random.nextInt(OpennetManager.RESET_PATH_FOLDING_PROB)
== 0) {
- finishOpennetNoRelay();
+ finishOpennetNoRelayInner();
return;
}
finishOpennetRelay(noderef);
}
- private void finishOpennetNoRelay() {
+ private void finishOpennetNoRelayChecked() {
+ if(!(node.passOpennetRefsThroughDarknet() ||
source.isOpennet())) return;
+ finishOpennetNoRelayInner();
+ }
+
+ private void finishOpennetNoRelayInner() {
if(logMINOR)
Logger.minor(this, "Finishing opennet: sending own reference");
OpennetManager om = node.getOpennet();