Improve proxy initialization
Simplify and make the code in AppInit2 more clear. This provides a straightforward flow, gets rid of .count() (which makes it possible to override an earlier provided proxy option to nothing), as well as comments the different cases.
This commit is contained in:
parent
ebab5d3c59
commit
baf05075fa
41
src/init.cpp
41
src/init.cpp
@ -984,31 +984,36 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proxyType addrProxy;
|
bool proxyRandomize = GetBoolArg("-proxyrandomize", true);
|
||||||
bool fProxy = false;
|
// -proxy sets a proxy for all outgoing network traffic
|
||||||
if (mapArgs.count("-proxy")) {
|
// -noproxy (or -proxy=0) as well as the empty string can be used to not set a proxy, this is the default
|
||||||
addrProxy = proxyType(CService(mapArgs["-proxy"], 9050), GetBoolArg("-proxyrandomize", true));
|
std::string proxyArg = GetArg("-proxy", "");
|
||||||
|
if (proxyArg != "" && proxyArg != "0") {
|
||||||
|
proxyType addrProxy = proxyType(CService(proxyArg, 9050), proxyRandomize);
|
||||||
if (!addrProxy.IsValid())
|
if (!addrProxy.IsValid())
|
||||||
return InitError(strprintf(_("Invalid -proxy address: '%s'"), mapArgs["-proxy"]));
|
return InitError(strprintf(_("Invalid -proxy address: '%s'"), proxyArg));
|
||||||
|
|
||||||
SetProxy(NET_IPV4, addrProxy);
|
SetProxy(NET_IPV4, addrProxy);
|
||||||
SetProxy(NET_IPV6, addrProxy);
|
SetProxy(NET_IPV6, addrProxy);
|
||||||
|
SetProxy(NET_TOR, addrProxy);
|
||||||
SetNameProxy(addrProxy);
|
SetNameProxy(addrProxy);
|
||||||
fProxy = true;
|
SetReachable(NET_TOR); // by default, -proxy sets onion as reachable, unless -noonion later
|
||||||
}
|
}
|
||||||
|
|
||||||
// -onion can override normal proxy, -noonion disables connecting to .onion entirely
|
// -onion can be used to set only a proxy for .onion, or override normal proxy for .onion addresses
|
||||||
if (!(mapArgs.count("-onion") && mapArgs["-onion"] == "0") &&
|
// -noonion (or -onion=0) disables connecting to .onion entirely
|
||||||
(fProxy || mapArgs.count("-onion"))) {
|
// An empty string is used to not override the onion proxy (in which case it defaults to -proxy set above, or none)
|
||||||
proxyType addrOnion;
|
std::string onionArg = GetArg("-onion", "");
|
||||||
if (!mapArgs.count("-onion"))
|
if (onionArg != "") {
|
||||||
addrOnion = addrProxy;
|
if (onionArg == "0") { // Handle -noonion/-onion=0
|
||||||
else
|
SetReachable(NET_TOR, false); // set onions as unreachable
|
||||||
addrOnion = proxyType(CService(mapArgs["-onion"], 9050), GetBoolArg("-proxyrandomize", true));
|
} else {
|
||||||
if (!addrOnion.IsValid())
|
proxyType addrOnion = proxyType(CService(onionArg, 9050), proxyRandomize);
|
||||||
return InitError(strprintf(_("Invalid -onion address: '%s'"), mapArgs["-onion"]));
|
if (!addrOnion.IsValid())
|
||||||
SetProxy(NET_TOR, addrOnion);
|
return InitError(strprintf(_("Invalid -onion address: '%s'"), onionArg));
|
||||||
SetReachable(NET_TOR);
|
SetProxy(NET_TOR, addrOnion);
|
||||||
|
SetReachable(NET_TOR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// see Step 2: parameter interactions for more information about these
|
// see Step 2: parameter interactions for more information about these
|
||||||
|
Loading…
Reference in New Issue
Block a user