mirror of
				https://github.com/bitcoin/bitcoin.git
				synced 2024-05-17 23:56:39 +00:00 
			
		
		
		
	Post-feb20 simplifications
Now the entire network upgraded to (initial) protocol version 209, crtainl simplifications in the source code are possible.
This commit is contained in:
		
							parent
							
								
									8a949dd6c3
								
							
						
					
					
						commit
						18c0fa97d0
					
				
							
								
								
									
										42
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								src/main.cpp
									
									
									
									
									
								
							@ -2100,18 +2100,24 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
 | 
			
		||||
        CAddress addrFrom;
 | 
			
		||||
        uint64 nNonce = 1;
 | 
			
		||||
        vRecv >> pfrom->nVersion >> pfrom->nServices >> nTime >> addrMe;
 | 
			
		||||
        if (pfrom->nVersion < 209)
 | 
			
		||||
        {
 | 
			
		||||
            // Since Februari 20, 2012, the protocol is initiated at version 209,
 | 
			
		||||
            // and earlier versions are no longer supported
 | 
			
		||||
            printf("partner %s using obsolete version %i; disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
 | 
			
		||||
            pfrom->fDisconnect = true;
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (pfrom->nVersion == 10300)
 | 
			
		||||
            pfrom->nVersion = 300;
 | 
			
		||||
        if (pfrom->nVersion >= 106 && !vRecv.empty())
 | 
			
		||||
        if (!vRecv.empty())
 | 
			
		||||
            vRecv >> addrFrom >> nNonce;
 | 
			
		||||
        if (pfrom->nVersion >= 106 && !vRecv.empty())
 | 
			
		||||
        if (!vRecv.empty())
 | 
			
		||||
            vRecv >> pfrom->strSubVer;
 | 
			
		||||
        if (pfrom->nVersion >= 209 && !vRecv.empty())
 | 
			
		||||
        if (!vRecv.empty())
 | 
			
		||||
            vRecv >> pfrom->nStartingHeight;
 | 
			
		||||
 | 
			
		||||
        if (pfrom->nVersion == 0)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        // Disconnect if we connected to ourself
 | 
			
		||||
        if (nNonce == nLocalHostNonce && nNonce > 1)
 | 
			
		||||
        {
 | 
			
		||||
@ -2129,11 +2135,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
 | 
			
		||||
        AddTimeData(pfrom->addr, nTime);
 | 
			
		||||
 | 
			
		||||
        // Change version
 | 
			
		||||
        if (pfrom->nVersion >= 209)
 | 
			
		||||
            pfrom->PushMessage("verack");
 | 
			
		||||
        pfrom->PushMessage("verack");
 | 
			
		||||
        pfrom->vSend.SetVersion(min(pfrom->nVersion, PROTOCOL_VERSION));
 | 
			
		||||
        if (pfrom->nVersion < 209)
 | 
			
		||||
            pfrom->vRecv.SetVersion(min(pfrom->nVersion, PROTOCOL_VERSION));
 | 
			
		||||
 | 
			
		||||
        if (!pfrom->fInbound)
 | 
			
		||||
        {
 | 
			
		||||
@ -2197,8 +2200,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
 | 
			
		||||
        vRecv >> vAddr;
 | 
			
		||||
 | 
			
		||||
        // Don't want addr from older versions unless seeding
 | 
			
		||||
        if (pfrom->nVersion < 209)
 | 
			
		||||
            return true;
 | 
			
		||||
        if (pfrom->nVersion < 31402 && mapAddresses.size() > 1000)
 | 
			
		||||
            return true;
 | 
			
		||||
        if (vAddr.size() > 1000)
 | 
			
		||||
@ -2660,17 +2661,14 @@ bool ProcessMessages(CNode* pfrom)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Checksum
 | 
			
		||||
        if (vRecv.GetVersion() >= 209)
 | 
			
		||||
        uint256 hash = Hash(vRecv.begin(), vRecv.begin() + nMessageSize);
 | 
			
		||||
        unsigned int nChecksum = 0;
 | 
			
		||||
        memcpy(&nChecksum, &hash, sizeof(nChecksum));
 | 
			
		||||
        if (nChecksum != hdr.nChecksum)
 | 
			
		||||
        {
 | 
			
		||||
            uint256 hash = Hash(vRecv.begin(), vRecv.begin() + nMessageSize);
 | 
			
		||||
            unsigned int nChecksum = 0;
 | 
			
		||||
            memcpy(&nChecksum, &hash, sizeof(nChecksum));
 | 
			
		||||
            if (nChecksum != hdr.nChecksum)
 | 
			
		||||
            {
 | 
			
		||||
                printf("ProcessMessage(%s, %u bytes) : CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n",
 | 
			
		||||
                       strCommand.c_str(), nMessageSize, nChecksum, hdr.nChecksum);
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            printf("ProcessMessage(%s, %u bytes) : CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n",
 | 
			
		||||
               strCommand.c_str(), nMessageSize, nChecksum, hdr.nChecksum);
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Copy message to its own buffer
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								src/net.h
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								src/net.h
									
									
									
									
									
								
							@ -166,15 +166,9 @@ public:
 | 
			
		||||
        nServices = 0;
 | 
			
		||||
        hSocket = hSocketIn;
 | 
			
		||||
        vSend.SetType(SER_NETWORK);
 | 
			
		||||
        vSend.SetVersion(0);
 | 
			
		||||
        vRecv.SetType(SER_NETWORK);
 | 
			
		||||
        vRecv.SetVersion(0);
 | 
			
		||||
        // Version 0.2 obsoletes 20 Feb 2012
 | 
			
		||||
        if (GetTime() > 1329696000)
 | 
			
		||||
        {
 | 
			
		||||
            vSend.SetVersion(209);
 | 
			
		||||
            vRecv.SetVersion(209);
 | 
			
		||||
        }
 | 
			
		||||
        vSend.SetVersion(209);
 | 
			
		||||
        vRecv.SetVersion(209);
 | 
			
		||||
        nLastSend = 0;
 | 
			
		||||
        nLastRecv = 0;
 | 
			
		||||
        nLastSendEmpty = GetTime();
 | 
			
		||||
@ -333,14 +327,11 @@ public:
 | 
			
		||||
        memcpy((char*)&vSend[nHeaderStart] + offsetof(CMessageHeader, nMessageSize), &nSize, sizeof(nSize));
 | 
			
		||||
 | 
			
		||||
        // Set the checksum
 | 
			
		||||
        if (vSend.GetVersion() >= 209)
 | 
			
		||||
        {
 | 
			
		||||
            uint256 hash = Hash(vSend.begin() + nMessageStart, vSend.end());
 | 
			
		||||
            unsigned int nChecksum = 0;
 | 
			
		||||
            memcpy(&nChecksum, &hash, sizeof(nChecksum));
 | 
			
		||||
            assert(nMessageStart - nHeaderStart >= offsetof(CMessageHeader, nChecksum) + sizeof(nChecksum));
 | 
			
		||||
            memcpy((char*)&vSend[nHeaderStart] + offsetof(CMessageHeader, nChecksum), &nChecksum, sizeof(nChecksum));
 | 
			
		||||
        }
 | 
			
		||||
        uint256 hash = Hash(vSend.begin() + nMessageStart, vSend.end());
 | 
			
		||||
        unsigned int nChecksum = 0;
 | 
			
		||||
        memcpy(&nChecksum, &hash, sizeof(nChecksum));
 | 
			
		||||
        assert(nMessageStart - nHeaderStart >= offsetof(CMessageHeader, nChecksum) + sizeof(nChecksum));
 | 
			
		||||
        memcpy((char*)&vSend[nHeaderStart] + offsetof(CMessageHeader, nChecksum), &nChecksum, sizeof(nChecksum));
 | 
			
		||||
 | 
			
		||||
        if (fDebug) {
 | 
			
		||||
            printf("(%d bytes)\n", nSize);
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,6 @@ class CMessageHeader
 | 
			
		||||
             READWRITE(FLATDATA(pchMessageStart));
 | 
			
		||||
             READWRITE(FLATDATA(pchCommand));
 | 
			
		||||
             READWRITE(nMessageSize);
 | 
			
		||||
             if (nVersion >= 209)
 | 
			
		||||
             READWRITE(nChecksum);
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user