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();


Reply via email to