Patched tor and jtorctl for improved hidden service performance.

Two changes have been made to Tor:

1. Set can_complete_circuit to false when the network is disabled, and
don't try to build introduction circuits while can_complete_circuit is
false. This avoids a situation where Tor tries to build introduction
circuits as soon as the network is re-enabled, all the circuits fail,
and then Tor waits 5 minutes before trying to build more.

2. Added a FORGETHS command to the control protocol which clears any
cached client state relating to a specified hidden service. This can be
used to flush state that's likely to be stale before trying to connect
to a hidden service with an unstable network connection.

Support for the FORGETHS command was also added to jtorctl.
This commit is contained in:
akwizgran
2014-10-06 18:57:57 +01:00
parent 3051d8811e
commit 9e5e2e2df2
5 changed files with 205 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
diff -Bbur jtorctl/net/freehaven/tor/control/TorControlConnection.java jtorctl-briar/net/freehaven/tor/control/TorControlConnection.java
--- jtorctl/net/freehaven/tor/control/TorControlConnection.java 2014-10-03 12:21:51.883098440 +0100
+++ jtorctl-briar/net/freehaven/tor/control/TorControlConnection.java 2014-10-03 12:17:07.429687913 +0100
@@ -728,5 +728,12 @@
+++ jtorctl-briar/net/freehaven/tor/control/TorControlConnection.java 2014-10-06 16:28:53.516851714 +0100
@@ -728,5 +728,19 @@
sendAndWaitForResponse("CLOSECIRCUIT "+circID+
(ifUnused?" IFUNUSED":"")+"\r\n", null);
}
@@ -11,6 +11,13 @@ diff -Bbur jtorctl/net/freehaven/tor/control/TorControlConnection.java jtorctl-b
+ */
+ public void takeOwnership() throws IOException {
+ sendAndWaitForResponse("TAKEOWNERSHIP\r\n", null);
+ }
+
+ /** Tells Tor to forget any cached client state relating to the hidden
+ * service with the given hostname (excluding the .onion extension).
+ */
+ public void forgetHiddenService(String hostname) throws IOException {
+ sendAndWaitForResponse("FORGETHS " + hostname + "\r\n", null);
+ }
}