Skip to content

Commit

Permalink
Fixed errors with several constraints checking for new peers
Browse files Browse the repository at this point in the history
  • Loading branch information
zilm13 committed Jan 12, 2017
1 parent 72f85b6 commit 3f01b5e
Showing 1 changed file with 10 additions and 4 deletions.
Expand Up @@ -534,18 +534,16 @@ protected synchronized void processInitHeaders(List<BlockHeader> received) {
for (Pair<Long, byte[]> constraint : constraints) {
if (constraint.getLeft() <= getBestKnownBlock().getNumber()) {
blockHashCheck.put(constraint.getLeft(), constraint.getRight());
sendGetBlockHeaders(constraint.getLeft(), 1, false);
}
}

logger.trace("Peer " + channel.getPeerIdShort() + ": Requested " + blockHashCheck.size() +
" headers for hash check: " + blockHashCheck.keySet());
requestNextHashCheck();

} else {
byte[] expectedHash = blockHashCheck.get(first.getNumber());
if (expectedHash != null) {
if (FastByteComparisons.equal(expectedHash, first.getHash())) {
blockHashCheck.remove(first.getNumber());
requestNextHashCheck();
} else {
logger.debug("Peer " + channel.getPeerIdShort() + ": wrong fork (expected block " +
first.getNumber() + " hash " + Hex.toHexString(expectedHash) + ", but got " +
Expand All @@ -563,6 +561,14 @@ protected synchronized void processInitHeaders(List<BlockHeader> received) {
}
}

private void requestNextHashCheck() {
if (!blockHashCheck.isEmpty()) {
Long checkHeader = blockHashCheck.keySet().iterator().next();
sendGetBlockHeaders(checkHeader, 1, false);
logger.trace("Peer {}: Requested #{} header for hash check.", channel.getPeerIdShort(), checkHeader);
}
}

private void updateBestBlock(Block block) {
updateBestBlock(block.getHeader());
}
Expand Down

0 comments on commit 3f01b5e

Please sign in to comment.