|
|
@ -558,47 +558,6 @@ bool ConnectThroughProxy(const proxyType &proxy, const std::string& strDest, int |
|
|
|
hSocketRet = hSocket; |
|
|
|
hSocketRet = hSocket; |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool ConnectSocket(const CService &addrDest, SOCKET& hSocketRet, int nTimeout, bool *outProxyConnectionFailed) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
proxyType proxy; |
|
|
|
|
|
|
|
if (outProxyConnectionFailed) |
|
|
|
|
|
|
|
*outProxyConnectionFailed = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GetProxy(addrDest.GetNetwork(), proxy)) |
|
|
|
|
|
|
|
return ConnectThroughProxy(proxy, addrDest.ToStringIP(), addrDest.GetPort(), hSocketRet, nTimeout, outProxyConnectionFailed); |
|
|
|
|
|
|
|
else // no proxy needed (none set for target network)
|
|
|
|
|
|
|
|
return ConnectSocketDirectly(addrDest, hSocketRet, nTimeout); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool ConnectSocketByName(CService &addr, SOCKET& hSocketRet, const char *pszDest, int portDefault, int nTimeout, bool *outProxyConnectionFailed) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
std::string strDest; |
|
|
|
|
|
|
|
int port = portDefault; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (outProxyConnectionFailed) |
|
|
|
|
|
|
|
*outProxyConnectionFailed = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SplitHostPort(std::string(pszDest), port, strDest); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proxyType proxy; |
|
|
|
|
|
|
|
GetNameProxy(proxy); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<CService> addrResolved; |
|
|
|
|
|
|
|
if (Lookup(strDest.c_str(), addrResolved, port, fNameLookup && !HaveNameProxy(), 256)) { |
|
|
|
|
|
|
|
if (addrResolved.size() > 0) { |
|
|
|
|
|
|
|
addr = addrResolved[GetRand(addrResolved.size())]; |
|
|
|
|
|
|
|
return ConnectSocket(addr, hSocketRet, nTimeout); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addr = CService(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!HaveNameProxy()) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
return ConnectThroughProxy(proxy, strDest, port, hSocketRet, nTimeout, outProxyConnectionFailed); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool LookupSubNet(const char* pszName, CSubNet& ret) |
|
|
|
bool LookupSubNet(const char* pszName, CSubNet& ret) |
|
|
|
{ |
|
|
|
{ |
|
|
|
std::string strSubnet(pszName); |
|
|
|
std::string strSubnet(pszName); |
|
|
|