Merge branch 'fix_626' of https://github.com/sipa/bitcoin
This commit is contained in:
commit
de737806b5
4 changed files with 52 additions and 52 deletions
51
src/irc.cpp
51
src/irc.cpp
|
@ -76,57 +76,6 @@ static bool Send(SOCKET hSocket, const char* pszSend)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RecvLine(SOCKET hSocket, string& strLine)
|
|
||||||
{
|
|
||||||
strLine = "";
|
|
||||||
loop
|
|
||||||
{
|
|
||||||
char c;
|
|
||||||
int nBytes = recv(hSocket, &c, 1, 0);
|
|
||||||
if (nBytes > 0)
|
|
||||||
{
|
|
||||||
if (c == '\n')
|
|
||||||
continue;
|
|
||||||
if (c == '\r')
|
|
||||||
return true;
|
|
||||||
strLine += c;
|
|
||||||
if (strLine.size() >= 9000)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (nBytes <= 0)
|
|
||||||
{
|
|
||||||
if (fShutdown)
|
|
||||||
return false;
|
|
||||||
if (nBytes < 0)
|
|
||||||
{
|
|
||||||
int nErr = WSAGetLastError();
|
|
||||||
if (nErr == WSAEMSGSIZE)
|
|
||||||
continue;
|
|
||||||
if (nErr == WSAEWOULDBLOCK || nErr == WSAEINTR || nErr == WSAEINPROGRESS)
|
|
||||||
{
|
|
||||||
Sleep(10);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!strLine.empty())
|
|
||||||
return true;
|
|
||||||
if (nBytes == 0)
|
|
||||||
{
|
|
||||||
// socket closed
|
|
||||||
printf("IRC socket closed\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// socket error
|
|
||||||
int nErr = WSAGetLastError();
|
|
||||||
printf("IRC recv failed: %d\n", nErr);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool RecvLineIRC(SOCKET hSocket, string& strLine)
|
bool RecvLineIRC(SOCKET hSocket, string& strLine)
|
||||||
{
|
{
|
||||||
loop
|
loop
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#ifndef BITCOIN_IRC_H
|
#ifndef BITCOIN_IRC_H
|
||||||
#define BITCOIN_IRC_H
|
#define BITCOIN_IRC_H
|
||||||
|
|
||||||
bool RecvLine(SOCKET hSocket, std::string& strLine);
|
|
||||||
void ThreadIRCSeed(void* parg);
|
void ThreadIRCSeed(void* parg);
|
||||||
|
|
||||||
extern int nGotIRCAddresses;
|
extern int nGotIRCAddresses;
|
||||||
|
|
51
src/net.cpp
51
src/net.cpp
|
@ -83,6 +83,57 @@ void CNode::PushGetBlocks(CBlockIndex* pindexBegin, uint256 hashEnd)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool RecvLine(SOCKET hSocket, string& strLine)
|
||||||
|
{
|
||||||
|
strLine = "";
|
||||||
|
loop
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
int nBytes = recv(hSocket, &c, 1, 0);
|
||||||
|
if (nBytes > 0)
|
||||||
|
{
|
||||||
|
if (c == '\n')
|
||||||
|
continue;
|
||||||
|
if (c == '\r')
|
||||||
|
return true;
|
||||||
|
strLine += c;
|
||||||
|
if (strLine.size() >= 9000)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (nBytes <= 0)
|
||||||
|
{
|
||||||
|
if (fShutdown)
|
||||||
|
return false;
|
||||||
|
if (nBytes < 0)
|
||||||
|
{
|
||||||
|
int nErr = WSAGetLastError();
|
||||||
|
if (nErr == WSAEMSGSIZE)
|
||||||
|
continue;
|
||||||
|
if (nErr == WSAEWOULDBLOCK || nErr == WSAEINTR || nErr == WSAEINPROGRESS)
|
||||||
|
{
|
||||||
|
Sleep(10);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!strLine.empty())
|
||||||
|
return true;
|
||||||
|
if (nBytes == 0)
|
||||||
|
{
|
||||||
|
// socket closed
|
||||||
|
printf("socket closed\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// socket error
|
||||||
|
int nErr = WSAGetLastError();
|
||||||
|
printf("recv failed: %d\n", nErr);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool GetMyExternalIP2(const CService& addrConnect, const char* pszGet, const char* pszKeyword, CNetAddr& ipRet)
|
bool GetMyExternalIP2(const CService& addrConnect, const char* pszGet, const char* pszKeyword, CNetAddr& ipRet)
|
||||||
|
|
|
@ -29,6 +29,7 @@ inline unsigned int ReceiveBufferSize() { return 1000*GetArg("-maxreceivebuffer"
|
||||||
inline unsigned int SendBufferSize() { return 1000*GetArg("-maxsendbuffer", 10*1000); }
|
inline unsigned int SendBufferSize() { return 1000*GetArg("-maxsendbuffer", 10*1000); }
|
||||||
static const unsigned int PUBLISH_HOPS = 5;
|
static const unsigned int PUBLISH_HOPS = 5;
|
||||||
|
|
||||||
|
bool RecvLine(SOCKET hSocket, std::string& strLine);
|
||||||
bool GetMyExternalIP(CNetAddr& ipRet);
|
bool GetMyExternalIP(CNetAddr& ipRet);
|
||||||
bool AddAddress(CAddress addr, int64 nTimePenalty=0, CAddrDB *pAddrDB=NULL);
|
bool AddAddress(CAddress addr, int64 nTimePenalty=0, CAddrDB *pAddrDB=NULL);
|
||||||
void AddressCurrentlyConnected(const CService& addr);
|
void AddressCurrentlyConnected(const CService& addr);
|
||||||
|
|
Loading…
Reference in a new issue