From cd699d757fc0f29ac4b55ecfdd212768e1721a94 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Thu, 21 Jun 2018 18:25:53 +0200 Subject: [PATCH] [enh] sync: reject too old peers --- app/lib/common-libs/constants.ts | 4 +++- app/lib/common-libs/errors.ts | 1 + app/service/PeeringService.ts | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) mode change 100644 => 100755 app/lib/common-libs/constants.ts mode change 100644 => 100755 app/lib/common-libs/errors.ts mode change 100644 => 100755 app/service/PeeringService.ts diff --git a/app/lib/common-libs/constants.ts b/app/lib/common-libs/constants.ts old mode 100644 new mode 100755 index 79fa4a2c1..30d4f4b7d --- a/app/lib/common-libs/constants.ts +++ b/app/lib/common-libs/constants.ts @@ -302,7 +302,9 @@ export const CommonConstants = { BLOCK_MAX_TX_CHAINING_DEPTH: 5, CONST_BLOCKS_CHUNK: 250, - BLOCKS_IN_MEMORY_MAX: 288 * 60 // 60 days of blocks + BLOCKS_IN_MEMORY_MAX: 288 * 60, // 60 days of blocks + + MAX_AGE_OF_PEER_IN_BLOCKS: 200, // blocks } function exact (regexpContent:string) { diff --git a/app/lib/common-libs/errors.ts b/app/lib/common-libs/errors.ts old mode 100644 new mode 100755 index 74d0c31b3..ffaa416c8 --- a/app/lib/common-libs/errors.ts +++ b/app/lib/common-libs/errors.ts @@ -1,5 +1,6 @@ export enum DataErrors { + TOO_OLD_PEER, LOKI_DIVIDEND_GET_WRITTEN_ON_SHOULD_NOT_BE_USED, LOKI_DIVIDEND_REMOVE_BLOCK_SHOULD_NOT_BE_USED, NEGATIVE_BALANCE, diff --git a/app/service/PeeringService.ts b/app/service/PeeringService.ts old mode 100644 new mode 100755 index 8e34626a5..41c666070 --- a/app/service/PeeringService.ts +++ b/app/service/PeeringService.ts @@ -23,6 +23,8 @@ import {Server} from "../../server" import {GlobalFifoPromise} from "./GlobalFifoPromise" import {DBPeer} from "../lib/db/DBPeer" import {Underscore} from "../lib/common-libs/underscore" +import {CommonConstants} from "../lib/common-libs/constants" +import {DataErrors} from "../lib/common-libs/errors" const util = require('util'); const events = require('events'); @@ -104,6 +106,7 @@ export class PeeringService { } } if (thePeer.block == constants.PEER.SPECIAL_BLOCK) { + thePeer.block = constants.PEER.SPECIAL_BLOCK; thePeer.statusTS = 0; thePeer.status = 'UP'; } else { @@ -115,6 +118,10 @@ export class PeeringService { thePeer.statusTS = 0; thePeer.status = 'UP'; } + const current = await this.dal.getBlockCurrent() + if ((!block && current.number > CommonConstants.MAX_AGE_OF_PEER_IN_BLOCKS) || (block && current.number - block.number > CommonConstants.MAX_AGE_OF_PEER_IN_BLOCKS)) { + throw Error(DataErrors[DataErrors.TOO_OLD_PEER]) + } } sigTime = block ? block.medianTime : 0; thePeer.statusTS = sigTime; -- GitLab