@@ -187,19 +187,19 @@ object ReconnectionTask {
187187 // @formatter:on
188188
189189 def selectNodeAddress (nodeParams : NodeParams , nodeAddresses : Seq [NodeAddress ]): Option [NodeAddress ] = {
190- // it doesn't make sense to mix tor and clearnet addresses, so we separate them and decide whether we use one or the other
191190 val torAddresses = nodeAddresses.collect { case o : OnionAddress => o }
192191 val clearnetAddresses = nodeAddresses diff torAddresses
193192 val selectedAddresses = nodeParams.socksProxy_opt match {
194- case Some (params) if clearnetAddresses.nonEmpty && params.useForTor && (! params.useForIPv4 || ! params.useForIPv6) =>
195- // Remote has clearnet (and possibly tor addresses), and we support tor, but we have configured it to only use
196- // tor when strictly necessary. In this case we will only connect over clearnet.
197- clearnetAddresses
198- case Some (params) if torAddresses.nonEmpty && params.useForTor =>
199- // In all other cases, if they have a tor address and we support tor, we use tor.
200- torAddresses
201- case _ =>
202- // Otherwise, if we don't support tor or they don't have a tor address, we use clearnet.
193+ case Some (socksProxy) =>
194+ if (socksProxy.useForTor) {
195+ // Tor is enabled, so we can connect to any type of addresses.
196+ nodeAddresses
197+ } else {
198+ // Tor is enabled, but for some reason tor addresses are not supported, we use clearnet addresses only.
199+ clearnetAddresses
200+ }
201+ case None =>
202+ // Otherwise, if we don't support tor, we use clearnet.
203203 clearnetAddresses
204204 }
205205 // finally, we pick an address at random
0 commit comments