Skip to content

Commit

Permalink
Delete CSeederHeaderMessage from the seeder and use CHeaderMessage in…
Browse files Browse the repository at this point in the history
…stead

Summary: More code reuse.

Test Plan: Build and run the seeder. Still finding peers and reporting them as expected.

Reviewers: schancel, #bitcoin_abc

Reviewed By: schancel, #bitcoin_abc

Differential Revision: https://reviews.bitcoinabc.org/D732
  • Loading branch information
deadalnix committed Dec 3, 2017
1 parent ff893b1 commit 2986e39
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 127 deletions.
2 changes: 0 additions & 2 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -390,8 +390,6 @@ libbitcoin_seeder_a_SOURCES = \
seeder/db.h \
seeder/dns.cpp \
seeder/dns.h \
seeder/messageheader.cpp \
seeder/messageheader.h \
seeder/strlcpy.h \
seeder/util.cpp \
seeder/util.h
Expand Down
24 changes: 12 additions & 12 deletions src/seeder/bitcoin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
bool fTestNet;

// The network magic to use.
CSeederMessageHeader::MessageMagic netMagic = {0xe3, 0xe1, 0xf3, 0xe8};
CMessageHeader::MessageMagic netMagic = {0xe3, 0xe1, 0xf3, 0xe8};

#define BITCOIN_SEED_NONCE 0x0539a019ca550825ULL

Expand All @@ -39,7 +39,7 @@ class CNode {
AbortMessage();
}
nHeaderStart = vSend.size();
vSend << CSeederMessageHeader(pszCommand, 0);
vSend << CMessageHeader(netMagic, pszCommand, 0);
nMessageStart = vSend.size();
// printf("%s: SEND %s\n", ToString(you).c_str(), pszCommand);
}
Expand All @@ -59,17 +59,16 @@ class CNode {
}
uint32_t nSize = vSend.size() - nMessageStart;
memcpy((char *)&vSend[nHeaderStart] +
offsetof(CSeederMessageHeader, nMessageSize),
offsetof(CMessageHeader, nMessageSize),
&nSize, sizeof(nSize));
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(CSeederMessageHeader, nChecksum) +
sizeof(nChecksum));
offsetof(CMessageHeader, pchChecksum) + sizeof(nChecksum));
memcpy((char *)&vSend[nHeaderStart] +
offsetof(CSeederMessageHeader, nChecksum),
offsetof(CMessageHeader, pchChecksum),
&nChecksum, sizeof(nChecksum));
}
nHeaderStart = allones;
Expand Down Expand Up @@ -192,7 +191,7 @@ class CNode {
CDataStream::iterator pstart = search(
vRecv.begin(), vRecv.end(), BEGIN(netMagic), END(netMagic));
uint32_t nHeaderSize = GetSerializeSize(
CSeederMessageHeader(), vRecv.GetType(), vRecv.GetVersion());
CMessageHeader(netMagic), vRecv.GetType(), vRecv.GetVersion());
if (vRecv.end() - pstart < nHeaderSize) {
if (vRecv.size() > nHeaderSize) {
vRecv.erase(vRecv.begin(), vRecv.end() - nHeaderSize);
Expand All @@ -202,9 +201,9 @@ class CNode {
vRecv.erase(vRecv.begin(), pstart);
std::vector<char> vHeaderSave(vRecv.begin(),
vRecv.begin() + nHeaderSize);
CSeederMessageHeader hdr;
CMessageHeader hdr(netMagic);
vRecv >> hdr;
if (!hdr.IsValid()) {
if (!hdr.IsValid(netMagic)) {
// printf("%s: BAD (invalid header)\n", ToString(you).c_str());
ban = 100000;
return true;
Expand All @@ -225,9 +224,10 @@ class CNode {
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) continue;
if (memcmp(hash.begin(), hdr.pchChecksum,
CMessageHeader::CHECKSUM_SIZE) != 0) {
continue;
}
}
CDataStream vMsg(vRecv.begin(), vRecv.begin() + nMessageSize,
vRecv.GetType(), vRecv.GetVersion());
Expand Down
3 changes: 1 addition & 2 deletions src/seeder/bitcoin.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#ifndef BITCOIN_SEEDER_BITCOIN_H
#define BITCOIN_SEEDER_BITCOIN_H

#include "messageheader.h"
#include "protocol.h"

#include <string>
Expand All @@ -18,7 +17,7 @@ static inline unsigned short GetDefaultPort(const bool testnet = fTestNet) {
}

// The network magic to use.
extern CSeederMessageHeader::MessageMagic netMagic;
extern CMessageHeader::MessageMagic netMagic;

bool TestNode(const CService &cip, int &ban, int &client, std::string &clientSV,
int &blocks, std::vector<CAddress> *vAddr);
Expand Down
65 changes: 0 additions & 65 deletions src/seeder/messageheader.cpp

This file was deleted.

46 changes: 0 additions & 46 deletions src/seeder/messageheader.h

This file was deleted.

0 comments on commit 2986e39

Please sign in to comment.