Changeset View
Changeset View
Standalone View
Standalone View
src/protocol.cpp
// Copyright (c) 2009-2010 Satoshi Nakamoto | // Copyright (c) 2009-2010 Satoshi Nakamoto | ||||
// Copyright (c) 2009-2016 The Bitcoin Core developers | // Copyright (c) 2009-2016 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#include "protocol.h" | #include "protocol.h" | ||||
#include "chainparams.h" | #include "chainparams.h" | ||||
#include "config.h" | #include "config.h" | ||||
#include "util.h" | #include "util.h" | ||||
#include "utilstrencodings.h" | #include "utilstrencodings.h" | ||||
#ifndef WIN32 | #ifndef WIN32 | ||||
#include <arpa/inet.h> | #include <arpa/inet.h> | ||||
#endif | #endif | ||||
#include <atomic> | |||||
static std::atomic<bool> g_initial_block_download_completed(false); | |||||
namespace NetMsgType { | namespace NetMsgType { | ||||
const char *VERSION = "version"; | const char *VERSION = "version"; | ||||
const char *VERACK = "verack"; | const char *VERACK = "verack"; | ||||
const char *ADDR = "addr"; | const char *ADDR = "addr"; | ||||
const char *INV = "inv"; | const char *INV = "inv"; | ||||
const char *GETDATA = "getdata"; | const char *GETDATA = "getdata"; | ||||
const char *MERKLEBLOCK = "merkleblock"; | const char *MERKLEBLOCK = "merkleblock"; | ||||
▲ Show 20 Lines • Show All 152 Lines • ▼ Show 20 Lines | bool CMessageHeader::IsOversized(const Config &config) const { | ||||
// Scale the maximum accepted size with the block size. | // Scale the maximum accepted size with the block size. | ||||
if (nMessageSize > 2 * config.GetMaxBlockSize()) { | if (nMessageSize > 2 * config.GetMaxBlockSize()) { | ||||
return true; | return true; | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
ServiceFlags GetDesirableServiceFlags(ServiceFlags services) { | |||||
if ((services & NODE_NETWORK_LIMITED) && | |||||
g_initial_block_download_completed) { | |||||
return ServiceFlags(NODE_NETWORK_LIMITED); | |||||
} | |||||
return ServiceFlags(NODE_NETWORK); | |||||
} | |||||
void SetServiceFlagsIBDCache(bool state) { | |||||
g_initial_block_download_completed = state; | |||||
} | |||||
CAddress::CAddress() : CService() { | CAddress::CAddress() : CService() { | ||||
Init(); | Init(); | ||||
} | } | ||||
CAddress::CAddress(CService ipIn, ServiceFlags nServicesIn) : CService(ipIn) { | CAddress::CAddress(CService ipIn, ServiceFlags nServicesIn) : CService(ipIn) { | ||||
Init(); | Init(); | ||||
nServices = nServicesIn; | nServices = nServicesIn; | ||||
} | } | ||||
Show All 34 Lines |