net: resolve outside of storage structures
Rather than allowing CNetAddr/CService/CSubNet to launch DNS queries, require that addresses are already resolved. This greatly simplifies async resolve logic, and makes it harder to accidentally leak DNS queries.
This commit is contained in:
parent
a98cd1fc86
commit
367569926a
2 changed files with 10 additions and 7 deletions
|
@ -1156,10 +1156,11 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
|
||||||
|
|
||||||
if (mapArgs.count("-externalip")) {
|
if (mapArgs.count("-externalip")) {
|
||||||
BOOST_FOREACH(const std::string& strAddr, mapMultiArgs["-externalip"]) {
|
BOOST_FOREACH(const std::string& strAddr, mapMultiArgs["-externalip"]) {
|
||||||
CService addrLocal(strAddr, GetListenPort(), fNameLookup);
|
CService addrLocal;
|
||||||
if (!addrLocal.IsValid())
|
if (Lookup(strAddr.c_str(), addrLocal, GetListenPort(), fNameLookup) && addrLocal.IsValid())
|
||||||
|
AddLocal(addrLocal, LOCAL_MANUAL);
|
||||||
|
else
|
||||||
return InitError(ResolveErrMsg("externalip", strAddr));
|
return InitError(ResolveErrMsg("externalip", strAddr));
|
||||||
AddLocal(CService(strAddr, GetListenPort(), fNameLookup), LOCAL_MANUAL);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -614,10 +614,12 @@ bool ConnectSocketByName(CService &addr, SOCKET& hSocketRet, const char *pszDest
|
||||||
proxyType nameProxy;
|
proxyType nameProxy;
|
||||||
GetNameProxy(nameProxy);
|
GetNameProxy(nameProxy);
|
||||||
|
|
||||||
CService addrResolved(CNetAddr(strDest, fNameLookup && !HaveNameProxy()), port);
|
CService addrResolved;
|
||||||
if (addrResolved.IsValid()) {
|
if (Lookup(strDest.c_str(), addrResolved, port, fNameLookup && !HaveNameProxy())) {
|
||||||
addr = addrResolved;
|
if (addrResolved.IsValid()) {
|
||||||
return ConnectSocket(addr, hSocketRet, nTimeout);
|
addr = addrResolved;
|
||||||
|
return ConnectSocket(addr, hSocketRet, nTimeout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = CService("0.0.0.0:0");
|
addr = CService("0.0.0.0:0");
|
||||||
|
|
Loading…
Reference in a new issue