diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2012-05-04 16:55:19 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2012-05-11 15:29:19 +0200 |
commit | 623b987813acfc985ecca591e96ac0b84f5333e3 (patch) | |
tree | 24ad73a5c0c336254ba886cc08089a5d9b006891 /src/netbase.cpp | |
parent | 090e5b40f1b3ac9ac6209f8996da4d686686a2ac (diff) |
Add -noproxy to circumvent proxy for some network
Diffstat (limited to 'src/netbase.cpp')
-rw-r--r-- | src/netbase.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/netbase.cpp b/src/netbase.cpp index 4c852f5eee..2c821c7acd 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -21,6 +21,7 @@ bool fProxyNameLookup = false; bool fNameLookup = false; CService addrProxy("127.0.0.1",9050); int nConnectTimeout = 5000; +static bool vfNoProxy[NET_MAX] = {}; static const unsigned char pchIPv4[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff }; @@ -33,6 +34,11 @@ enum Network ParseNetwork(std::string net) { return NET_UNROUTABLE; } +void SetNoProxy(enum Network net, bool fNoProxy) { + assert(net >= 0 && net < NET_MAX); + vfNoProxy[net] = fNoProxy; +} + bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP, unsigned int nMaxSolutions, bool fAllowLookup) { vIP.clear(); @@ -440,7 +446,7 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe bool ConnectSocket(const CService &addrDest, SOCKET& hSocketRet, int nTimeout) { SOCKET hSocket = INVALID_SOCKET; - bool fProxy = (fUseProxy && addrDest.IsRoutable()); + bool fProxy = (fUseProxy && addrDest.IsRoutable() && !vfNoProxy[addrDest.GetNetwork()]); if (!ConnectSocketDirectly(fProxy ? addrProxy : addrDest, hSocket, nTimeout)) return false; |