diff --git a/doc/tor.md b/doc/tor.md index 2aa352d46..6c912e2a7 100644 --- a/doc/tor.md +++ b/doc/tor.md @@ -100,8 +100,9 @@ Zcash has been updated to make use of this. This means that if Tor is running (and proper authorization is available), Zcash automatically creates a hidden service to listen on, without -manual configuration. This will positively affect the number of available -.onion nodes. +manual configuration. Zcash will also use Tor automatically to connect +to other .onion nodes if the control socket can be successfully opened. This +will positively affect the number of available .onion nodes and their usage. This new feature is enabled by default if Zcash is listening, and a connection to Tor can be made. It can be configured with the `-listenonion`, diff --git a/src/torcontrol.cpp b/src/torcontrol.cpp index 08644f296..31a291720 100644 --- a/src/torcontrol.cpp +++ b/src/torcontrol.cpp @@ -449,6 +449,15 @@ void TorController::auth_cb(TorControlConnection& conn, const TorControlReply& r { if (reply.code == 250) { LogPrint("tor", "tor: Authentication succesful\n"); + + // Now that we know Tor is running setup the proxy for onion addresses + // if -onion isn't set to something else. + if (GetArg("-onion", "") == "") { + proxyType addrOnion = proxyType(CService("127.0.0.1", 9050), true); + SetProxy(NET_TOR, addrOnion); + SetReachable(NET_TOR); + } + // Finally - now create the service if (private_key.empty()) // No private key, generate one private_key = "NEW:BEST";