X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fprotocol.cpp;h=e33ede58c6b1984a562f044ada246ceefaf65542;hb=3176e0f244d929669aa3e1d81e0787d82d9150d3;hp=fda31966f2c6d0451062d1355e416dff743a0df4;hpb=1d8c7a9557d596d4c7edee801a724db7a908bce5;p=novacoin.git diff --git a/src/protocol.cpp b/src/protocol.cpp index fda3196..e33ede5 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -1,7 +1,8 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers +// Copyright (c) 2013 NovaCoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "protocol.h" #include "util.h" @@ -11,6 +12,21 @@ # include #endif +// The message start string is designed to be unlikely to occur in normal data. +// The characters are rarely used upper ascii, not valid as UTF-8, and produce +// a large 4-byte int at any alignment. + +static unsigned char pchMessageStartTestNew[4] = { 0xcd, 0xf2, 0xc0, 0xef }; +static unsigned char pchMessageStartPPCoin[4] = { 0xe4, 0xe8, 0xe9, 0xe5 }; + +void GetMessageStart(unsigned char pchMessageStart[], bool fPersistent) +{ + if (fTestNet) + memcpy(pchMessageStart, pchMessageStartTestNew, sizeof(pchMessageStartTestNew)); + else + memcpy(pchMessageStart, pchMessageStartPPCoin, sizeof(pchMessageStartPPCoin)); +} + static const char* ppszTypeName[] = { "ERROR", @@ -20,7 +36,7 @@ static const char* ppszTypeName[] = CMessageHeader::CMessageHeader() { - memcpy(pchMessageStart, ::pchMessageStart, sizeof(pchMessageStart)); + GetMessageStart(pchMessageStart); memset(pchCommand, 0, sizeof(pchCommand)); pchCommand[1] = 1; nMessageSize = -1; @@ -29,7 +45,7 @@ CMessageHeader::CMessageHeader() CMessageHeader::CMessageHeader(const char* pszCommand, unsigned int nMessageSizeIn) { - memcpy(pchMessageStart, ::pchMessageStart, sizeof(pchMessageStart)); + GetMessageStart(pchMessageStart); strncpy(pchCommand, pszCommand, COMMAND_SIZE); nMessageSize = nMessageSizeIn; nChecksum = 0; @@ -46,7 +62,9 @@ std::string CMessageHeader::GetCommand() const bool CMessageHeader::IsValid() const { // Check start string - if (memcmp(pchMessageStart, ::pchMessageStart, sizeof(pchMessageStart)) != 0) + unsigned char pchMessageStartProtocol[4]; + GetMessageStart(pchMessageStartProtocol); + if (memcmp(pchMessageStart, pchMessageStartProtocol, sizeof(pchMessageStart)) != 0) return false; // Check the command string for errors