@VisibleForTesting
  void handleBlockRangeUpdateMessage(final EthMessage message) {
    try {
      final BlockRangeUpdateMessage blockRangeUpdateMessage =
          BlockRangeUpdateMessage.readFrom(message.getData());
      final long earliestBlockNumber = blockRangeUpdateMessage.getEarliestBlockNumber();
      final long latestBlockNumber = blockRangeUpdateMessage.getLatestBlockNumber();
      final Hash blockHash = blockRangeUpdateMessage.getBlockHash();
      LOG.debug(
          "Received blockRange=[{}, {}, {}] from peer={}",
          earliestBlockNumber,
          latestBlockNumber,
          blockHash,
          message.getPeer().getLoggableId());
      if (isValid(blockRangeUpdateMessage)) {
        message.getPeer().registerKnownBlock(blockHash);
        message.getPeer().registerBlockRange(blockHash, latestBlockNumber, earliestBlockNumber);
      } else {
        LOG.trace(
            "Invalid block range update message received: earliest={}, latest={}",
            earliestBlockNumber,
            latestBlockNumber);
        handleInvalidMessage(message, DisconnectMessage.DisconnectReason.SUBPROTOCOL_TRIGGERED);
      }
    } catch (final RLPException e) {
      LOG.atTrace()
          .setMessage("Unable to parse BlockRangeUpdateMessage from peer {} {}")
          .addArgument(message.getPeer()::getLoggableId)
          .addArgument(e)
          .log();
      handleInvalidMessage(
          message,
          DisconnectMessage.DisconnectReason.BREACH_OF_PROTOCOL_MALFORMED_MESSAGE_RECEIVED);
    }
  }
Handles the block range update message received from a peer.

@param message the message received from the peer
ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/BlockRangeBroadcaster.java