|
|
|
@ -1266,16 +1266,23 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
@@ -1266,16 +1266,23 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check for host lookup allowed before parsing any network related parameters
|
|
|
|
|
fNameLookup = GetBoolArg("-dns", DEFAULT_NAME_LOOKUP); |
|
|
|
|
|
|
|
|
|
bool proxyRandomize = GetBoolArg("-proxyrandomize", DEFAULT_PROXYRANDOMIZE); |
|
|
|
|
// -proxy sets a proxy for all outgoing network traffic
|
|
|
|
|
// -noproxy (or -proxy=0) as well as the empty string can be used to not set a proxy, this is the default
|
|
|
|
|
std::string proxyArg = GetArg("-proxy", ""); |
|
|
|
|
SetLimited(NET_TOR); |
|
|
|
|
if (proxyArg != "" && proxyArg != "0") { |
|
|
|
|
CService resolved(LookupNumeric(proxyArg.c_str(), 9050)); |
|
|
|
|
proxyType addrProxy = proxyType(resolved, proxyRandomize); |
|
|
|
|
CService proxyAddr; |
|
|
|
|
if (!Lookup(proxyArg.c_str(), proxyAddr, 9050, fNameLookup)) { |
|
|
|
|
return InitError(strprintf(_("Invalid -proxy address or hostname: '%s'"), proxyArg)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
proxyType addrProxy = proxyType(proxyAddr, proxyRandomize); |
|
|
|
|
if (!addrProxy.IsValid()) |
|
|
|
|
return InitError(strprintf(_("Invalid -proxy address: '%s'"), proxyArg)); |
|
|
|
|
return InitError(strprintf(_("Invalid -proxy address or hostname: '%s'"), proxyArg)); |
|
|
|
|
|
|
|
|
|
SetProxy(NET_IPV4, addrProxy); |
|
|
|
|
SetProxy(NET_IPV6, addrProxy); |
|
|
|
@ -1292,10 +1299,13 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
@@ -1292,10 +1299,13 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|
|
|
|
if (onionArg == "0") { // Handle -noonion/-onion=0
|
|
|
|
|
SetLimited(NET_TOR); // set onions as unreachable
|
|
|
|
|
} else { |
|
|
|
|
CService resolved(LookupNumeric(onionArg.c_str(), 9050)); |
|
|
|
|
proxyType addrOnion = proxyType(resolved, proxyRandomize); |
|
|
|
|
CService onionProxy; |
|
|
|
|
if (!Lookup(onionArg.c_str(), onionProxy, 9050, fNameLookup)) { |
|
|
|
|
return InitError(strprintf(_("Invalid -onion address or hostname: '%s'"), onionArg)); |
|
|
|
|
} |
|
|
|
|
proxyType addrOnion = proxyType(onionProxy, proxyRandomize); |
|
|
|
|
if (!addrOnion.IsValid()) |
|
|
|
|
return InitError(strprintf(_("Invalid -onion address: '%s'"), onionArg)); |
|
|
|
|
return InitError(strprintf(_("Invalid -onion address or hostname: '%s'"), onionArg)); |
|
|
|
|
SetProxy(NET_TOR, addrOnion); |
|
|
|
|
SetLimited(NET_TOR, false); |
|
|
|
|
} |
|
|
|
@ -1304,7 +1314,6 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
@@ -1304,7 +1314,6 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|
|
|
|
// see Step 2: parameter interactions for more information about these
|
|
|
|
|
fListen = GetBoolArg("-listen", DEFAULT_LISTEN); |
|
|
|
|
fDiscover = GetBoolArg("-discover", true); |
|
|
|
|
fNameLookup = GetBoolArg("-dns", DEFAULT_NAME_LOOKUP); |
|
|
|
|
fRelayTxes = !GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY); |
|
|
|
|
|
|
|
|
|
if (fListen) { |
|
|
|
|