diff options
Diffstat (limited to 'src/netbase.cpp')
| -rw-r--r-- | src/netbase.cpp | 73 |
1 files changed, 36 insertions, 37 deletions
diff --git a/src/netbase.cpp b/src/netbase.cpp index 4f31ce9cf..d5b75d6af 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -1,20 +1,26 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2009-2012 The Bitcoin developers +// Copyright (c) 2009-2014 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "netbase.h" -#include "util.h" -#include "sync.h" + #include "hash.h" +#include "sync.h" +#include "uint256.h" +#include "util.h" #ifndef WIN32 -#include <sys/fcntl.h> +#include <fcntl.h> #endif #include <boost/algorithm/string/case_conv.hpp> // for to_lower() #include <boost/algorithm/string/predicate.hpp> // for startswith() and endswith() +#if !defined(HAVE_MSG_NOSIGNAL) && !defined(MSG_NOSIGNAL) +#define MSG_NOSIGNAL 0 +#endif + using namespace std; // Settings @@ -72,19 +78,14 @@ bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP, unsign aiHint.ai_socktype = SOCK_STREAM; aiHint.ai_protocol = IPPROTO_TCP; -#ifdef WIN32 -# ifdef USE_IPV6 +#ifdef USE_IPV6 aiHint.ai_family = AF_UNSPEC; -# else +#else aiHint.ai_family = AF_INET; -# endif +#endif +#ifdef WIN32 aiHint.ai_flags = fAllowLookup ? 0 : AI_NUMERICHOST; #else -# ifdef USE_IPV6 - aiHint.ai_family = AF_UNSPEC; -# else - aiHint.ai_family = AF_INET; -# endif aiHint.ai_flags = fAllowLookup ? AI_ADDRCONFIG : AI_NUMERICHOST; #endif struct addrinfo *aiRes = NULL; @@ -119,13 +120,12 @@ bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP, unsign bool LookupHost(const char *pszName, std::vector<CNetAddr>& vIP, unsigned int nMaxSolutions, bool fAllowLookup) { - std::string str(pszName); - std::string strHost = str; - if (str.empty()) + std::string strHost(pszName); + if (strHost.empty()) return false; - if (boost::algorithm::starts_with(str, "[") && boost::algorithm::ends_with(str, "]")) + if (boost::algorithm::starts_with(strHost, "[") && boost::algorithm::ends_with(strHost, "]")) { - strHost = str.substr(1, str.size() - 2); + strHost = strHost.substr(1, strHost.size() - 2); } return LookupIntern(strHost.c_str(), vIP, nMaxSolutions, fAllowLookup); @@ -171,7 +171,7 @@ bool LookupNumeric(const char *pszName, CService& addr, int portDefault) bool static Socks4(const CService &addrDest, SOCKET& hSocket) { - printf("SOCKS4 connecting %s\n", addrDest.ToString().c_str()); + LogPrintf("SOCKS4 connecting %s\n", addrDest.ToString()); if (!addrDest.IsIPv4()) { closesocket(hSocket); @@ -206,26 +206,25 @@ bool static Socks4(const CService &addrDest, SOCKET& hSocket) { closesocket(hSocket); if (pchRet[1] != 0x5b) - printf("ERROR: Proxy returned error %d\n", pchRet[1]); + LogPrintf("ERROR: Proxy returned error %d\n", pchRet[1]); return false; } - printf("SOCKS4 connected %s\n", addrDest.ToString().c_str()); + LogPrintf("SOCKS4 connected %s\n", addrDest.ToString()); return true; } bool static Socks5(string strDest, int port, SOCKET& hSocket) { - printf("SOCKS5 connecting %s\n", strDest.c_str()); + LogPrintf("SOCKS5 connecting %s\n", strDest); if (strDest.size() > 255) { closesocket(hSocket); return error("Hostname too long"); } char pszSocks5Init[] = "\5\1\0"; - char *pszSocks5 = pszSocks5Init; ssize_t nSize = sizeof(pszSocks5Init) - 1; - ssize_t ret = send(hSocket, pszSocks5, nSize, MSG_NOSIGNAL); + ssize_t ret = send(hSocket, pszSocks5Init, nSize, MSG_NOSIGNAL); if (ret != nSize) { closesocket(hSocket); @@ -312,7 +311,7 @@ bool static Socks5(string strDest, int port, SOCKET& hSocket) closesocket(hSocket); return error("Error reading from proxy"); } - printf("SOCKS5 connected %s\n", strDest.c_str()); + LogPrintf("SOCKS5 connected %s\n", strDest); return true; } @@ -327,7 +326,7 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe #endif socklen_t len = sizeof(sockaddr); if (!addrConnect.GetSockAddr((struct sockaddr*)&sockaddr, &len)) { - printf("Cannot connect to %s: unsupported network\n", addrConnect.ToString().c_str()); + LogPrintf("Cannot connect to %s: unsupported network\n", addrConnect.ToString()); return false; } @@ -366,13 +365,13 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe int nRet = select(hSocket + 1, NULL, &fdset, NULL, &timeout); if (nRet == 0) { - printf("connection timeout\n"); + LogPrint("net", "connection to %s timeout\n", addrConnect.ToString()); closesocket(hSocket); return false; } if (nRet == SOCKET_ERROR) { - printf("select() for connection failed: %i\n",WSAGetLastError()); + LogPrintf("select() for %s failed: %i\n", addrConnect.ToString(), WSAGetLastError()); closesocket(hSocket); return false; } @@ -383,13 +382,13 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe if (getsockopt(hSocket, SOL_SOCKET, SO_ERROR, &nRet, &nRetSize) == SOCKET_ERROR) #endif { - printf("getsockopt() for connection failed: %i\n",WSAGetLastError()); + LogPrintf("getsockopt() for %s failed: %i\n", addrConnect.ToString(), WSAGetLastError()); closesocket(hSocket); return false; } if (nRet != 0) { - printf("connect() failed after select(): %s\n",strerror(nRet)); + LogPrintf("connect() to %s failed after select(): %s\n", addrConnect.ToString(), strerror(nRet)); closesocket(hSocket); return false; } @@ -400,7 +399,7 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe else #endif { - printf("connect() failed: %i\n",WSAGetLastError()); + LogPrintf("connect() to %s failed: %i\n", addrConnect.ToString(), WSAGetLastError()); closesocket(hSocket); return false; } @@ -414,7 +413,7 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe if (ioctlsocket(hSocket, FIONBIO, &fNonblock) == SOCKET_ERROR) #else fFlags = fcntl(hSocket, F_GETFL, 0); - if (fcntl(hSocket, F_SETFL, fFlags & !O_NONBLOCK) == SOCKET_ERROR) + if (fcntl(hSocket, F_SETFL, fFlags & ~O_NONBLOCK) == SOCKET_ERROR) #endif { closesocket(hSocket); @@ -867,7 +866,7 @@ std::vector<unsigned char> CNetAddr::GetGroup() const nBits = 4; } // for he.net, use /36 groups - else if (GetByte(15) == 0x20 && GetByte(14) == 0x11 && GetByte(13) == 0x04 && GetByte(12) == 0x70) + else if (GetByte(15) == 0x20 && GetByte(14) == 0x01 && GetByte(13) == 0x04 && GetByte(12) == 0x70) nBits = 36; // for the rest of the IPv6 network, use /32 groups else @@ -886,17 +885,17 @@ std::vector<unsigned char> CNetAddr::GetGroup() const return vchRet; } -uint64 CNetAddr::GetHash() const +uint64_t CNetAddr::GetHash() const { uint256 hash = Hash(&ip[0], &ip[16]); - uint64 nRet; + uint64_t nRet; memcpy(&nRet, &hash, sizeof(nRet)); return nRet; } void CNetAddr::print() const { - printf("CNetAddr(%s)\n", ToString().c_str()); + LogPrintf("CNetAddr(%s)\n", ToString()); } // private extensions to enum Network, only returned by GetExtNetwork, @@ -1137,7 +1136,7 @@ std::string CService::ToString() const void CService::print() const { - printf("CService(%s)\n", ToString().c_str()); + LogPrintf("CService(%s)\n", ToString()); } void CService::SetPort(unsigned short portIn) |