@@ -187,19 +187,19 @@ object ReconnectionTask {
187
187
// @formatter:on
188
188
189
189
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
191
190
val torAddresses = nodeAddresses.collect { case o : OnionAddress => o }
192
191
val clearnetAddresses = nodeAddresses diff torAddresses
193
192
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.
203
203
clearnetAddresses
204
204
}
205
205
// finally, we pick an address at random
0 commit comments